Wenn Sie eine Ziffernfolge oder eine Ganzzahl als Eingabe angeben, müssen Sie diese indizieren.
So ändern Sie die Eingabe. Wir werden 30043376111
als Beispiel verwenden:
Ermitteln Sie zunächst die Summe der Indizes jedes Vorkommens der entsprechenden Ziffern:
0: 1 + 2 = 3
1: 8 + 9 + 10 = 27
3: 0 + 4 + 5 = 9
4: 3
6: 7
7: 6
Konstruieren Sie dann eine neue Ganzzahl oder Zeichenfolge, wobei die obigen Ziffern in der Reihenfolge der Summen ihrer Indizes angeordnet sind. Für den Fall, dass mehrere Ziffern dieselbe Summe ergeben, steht die kleinere Ziffer vor der größeren:
047631
Entfernen Sie abschließend alle führenden Nullen und geben Sie das Ergebnis zurück oder drucken Sie es aus:
47631
Sie müssen ein Programm oder eine Funktion schreiben, die die Eingabe indexiert zurückgibt oder druckt.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Weitere Testfälle können auf Anfrage hinzugefügt werden.
Antworten:
k, 7 Bytes
Online-Antwort
Das Nebeneinander von Funktionen ist die Komposition, daher sind keine expliziten Parameter oder Eingaben erforderlich.
quelle
Haskell, 69 Bytes
Nimmt einen String und gibt eine Zahl zurück. Anwendungsbeispiel:
f "30043376111"
->47631
. Probieren Sie es online!Ganz einfach: Sortieren Sie die Ziffern der Eingabezeichenfolge zuerst nach der Summe ihrer Indizes und nach der Ziffer selbst (-> Paare von (Summe ..., d)), entfernen Sie Duplikate und konvertieren Sie sie in eine Zahl, um die führenden zu entfernen
0
. Das0+
wird benötigt, um die richtigen Typen zu finden.quelle
Gestapelt , 59 Bytes
Probieren Sie es online!
Dabei wird eine Zeichenfolge (wie
$'1231231'
) als Eingabe vom oberen Rand des Stapels verwendet und eine Zeichenfolge auf dem Stapel belassen.Erläuterung
Jetzt haben wir noch Paare von (chr, Summe der Indizes).
quelle
05AB1E ,
2928 Bytes-1 danke an Riley
Probieren Sie es online!
quelle
TFN
für9Ývy
JavaScript (ES6), 98 Byte
Nimmt eine Zeichenfolge
n
und konvertiert sie dann in ein Set und dann in ein Array mit verschiedenen Ziffern. Sortiert diese Ziffern in numerischer Reihenfolge und sortiert sie dann erneut nach Indexsummen. Verkettet das sortierte Array zu einem String und wandelt es schließlich in eine Zahl um, um führende Nullen zu entfernen.quelle
.sort()
PowerShell , 88 Byte
Probieren Sie es online!
Setzt eine leere Hashtabelle
$a
, wandelt die Eingabe$args
alschar
Array um und durchläuft jedes Element in einer Schleife|%{...}
. Wir setzen den Wert auf "das aktuelle Element"$a
, um das inkrementiert werden soll$i++
, um die Indizes unserer Eingabe zu zählen. Für die Eingabe300433766111
wird beispielsweise die erste Schleife$a[3]
abgerufen+=0
. die nächste Schleife$a[0]
bekommt+=1
; etc.Als nächstes müssen wir zu
Sort
unserer Hash-Tabelle. Aufgrund einer internen Sprachanomalie müssen$a.GetEnumerator()
wir dies leider tun , bevor wir die eigentliche Sortierung durchführen können. Wir sortieren nachvalue
und sortieren nach ,name
um die Anforderung zu erfüllen, dass kleinere Ziffern zuerst sortiert werden. Wir ziehen die.Name
s davon (in sortierter Reihenfolge)-join
zu einer Zeichenkette zusammen und wandeln diese Zeichenkette als int+
um, um führende Nullen zu entfernen. Das bleibt in der Pipeline und die Ausgabe ist implizit.quelle
Gelee , 10 Bytes
Probieren Sie es online!
Nimmt und gibt eine ganze Zahl zurück.
Wie?
quelle
PHP, 103 Bytes
quelle
Python 2,
10292 BytesVielen Dank an Ben Frankel für das Speichern von 10 Bytes!
Probieren Sie es online!
Nimmt Eingaben als Zeichenfolge und gibt eine Ganzzahl aus. Verwendet ein Wörterbuch, um die Summe der Indizes zu speichern, und sortiert sie dann nach Wert. Konvertiert in eine Ganzzahl, um führende Nullen zu entfernen, da
int
kürzer als.lsplit('0')
.quelle
a[j]=a.get(j,0)+i
Spart 10 Bytes.Python 3.5,
8685 BytesDanke @Ben Frankel für das Speichern eines Bytes:
Alter Code:
Anonyme Funktion, die eine Ziffernfolge verwendet und eine Ganzzahl zurückgibt
quelle
sum(i*(c==d)for
Spart 1 Byte.Pip , 18 Bytes
Nimmt die Zahl als Befehlszeilenargument. Probieren Sie es online!
Erläuterung
quelle
C #, 245 Bytes
Ich bin nicht glücklich darüber, wie lange es gedauert hat und es kann wahrscheinlich kürzer sein, aber das ist es, womit ich gelandet bin.
quelle
Perl 6 ,
65 6152 BytesVersuch es
Versuch es
Versuch es
Erweitert
quelle
Scala,
123104 BytesBeispiel (mit Scala REPL):
Ziemlich einfach, Tupel als Sortierprädikat für die sekundäre Sortierung zu verwenden.
quelle
Pyth, 9 Bytes
Probieren Sie es online aus
Nimmt eine Ziffernfolge als Eingabe.
quelle