Herausforderung:
Eingang:
Eine sortierte Liste positiver Ganzzahlen.
Ausgabe:
Die Anzahl der Ganzzahlen, die sich noch auf dem exakt gleichen Index befinden, nachdem die Ziffern in jeder Ganzzahl mehrmals nach links gedreht und die geänderte Liste erneut sortiert wurden.
Beispiel:
Eingabe: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Ausgabe (0-basierte Indizierung): 6
Ausgabe (1-basierte Indizierung):5
Warum?
0-basierte Indizierung:
After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471]
Sorted again: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Input indices: 0 1 2 3 4 5 6 7 8 9 10 11
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Modified indices: 0 2 1 3 5 4 7 6 8 9 10 11
Equal indices: ^ ^ ^ ^ ^ ^
So the output is: 6
1-basierte Indizierung:
After rotating each: [8,49,37,021,925,762,2278,3383,2179,37846,94878,8874717]
Sorted again: [8,(0)21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Input indices: 1 2 3 4 5 6 7 8 9 10 11 12
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Modified indices: 1 4 3 2 6 5 9 7 8 10 11 12
Equal indices: ^ ^ ^ ^ ^
So the output is: 5
Herausforderungsregeln:
- Die Eingabeliste enthält garantiert nur positive ganze Zahlen.
- Die Eingabeliste wird garantiert von der niedrigsten zur höchsten sortiert.
- Die Eingabeliste enthält garantiert mindestens zwei Einträge.
- Wie Sie oben sehen können, ist sowohl eine 0-basierte als auch eine 1-basierte Indizierung zulässig. Bitte geben Sie in Ihrer Antwort an, welche von beiden Sie verwendet haben, da die Ausgaben entsprechend unterschiedlich sein können!
- Führende
0
s nach ignoriert Drehen, die mit dem 1-basierten Beispiel gesehen werden können oben, wobei die ganze Zahl102
wird021
nach dem Drehen, und wird dann behandelt , als21
. - Ganzzahlen sind in der Eingabeliste garantiert eindeutig und bleiben auch nach Abschluss der Umdrehungen eindeutig.
- Beachten Sie, dass wir nur die Positionen der gedrehten ganzen Zahlen in Korrelation mit den Positionen der Eingabe betrachten, nicht mit den Werten der Eingabeliste. Um zu verdeutlichen, was ich damit meine: Mit der Eingabeliste
[1234,3412]
und der 1-basierten Indizierung wird die Liste[2341,1234]
nach dem Drehen jeder ganzen Zahl so oft indexiert, bis sie sortiert wird[1234,2341]
. Obwohl sowohl die ursprüngliche Eingabeliste als auch die gedrehte Liste die Ganzzahl1234
an der führenden Position enthalten, sind sie nicht gleich! Der1234
wurde3412
vorher gedreht . Die 1-indizierte Ausgabe für diese Eingabeliste lautet daher0
, da die beiden Ganzzahlen ihre Positionen vertauscht haben. - Die Eingabe ist flexibel. Kann eine Liste / ein Stream / ein Array von Ganzzahlen / Zeichenfolgen / Ziffern-Arrays usw. sein. Bitte geben Sie an, was Sie verwendet haben, wenn Sie die Eingaben nicht als Ganzzahlen verwenden.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Input: [8, 49, 73, 102, 259, 762, 2782, 3383, 9217, 37846, 89487, 7471788]
0-based output: 6
1-based output: 5
Input: [1234, 3412]
0-based output: 2
1-based output: 0
Input: [2349, 2820, 17499, 21244, 29842, 31857, 46645, 56675, 61643, 61787]
0-based output: 3
1-based output: 0
Input: [4976, 11087, 18732, 22643, 52735]
0-based output: 2
1-based output: 3
Input: [4414, 5866, 7175, 8929, 14048, 16228, 16809, 19166, 24408, 25220, 29333, 44274, 47275, 47518, 53355]
0-based output: 4
1-based output: 4
Input: [11205, 16820, 63494]
0-based output: 1
1-based output: 3
Sie können mit diesem ungolfed 05AB1E-Programm weitere zufällige Testfälle generieren (oder sich von diesen inspirieren lassen) , wobei die Eingabe der Größe der Zufallsliste entspricht (HINWEIS: Die Ausgabe dieses Generators entspricht möglicherweise nicht der Regel " Ganzzahlen sind garantiert eindeutig in" die Eingabeliste und bleiben nach Abschluss der Rotationen garantiert eindeutig ", denken Sie also daran, wenn Sie sie verwenden.)
Antworten:
R ,
114107 Bytes-5 Bytes dank Giuseppe.
Von digEmAll überfordert.
Probieren Sie es online!
0-indiziert.
Ungolfed-Version:
Um die
b
Ziffern einer Ganzzahl umj
Positionen zu drehen , wiederholt der Code die Ziffern viele Male und nimmt dann die Ziffern in Positionenj+1
bis aufj+b
. Wenn Sie beispielsweise102
viermal drehen möchten, lassen Sie die Werte mit einemx
(Positionen 5 bis 7) markiert :Das Ergebnis ist also
021
.quelle
seq(a=...)
. Ich erwarte, dass es etwasMap
Magie gibt , aber meine Versuche ließen die Byteanzahl bestenfalls unverändert.Map
könnte ein bisschen zu teuer sein, da dasfunction
Boilerplate mindestens 9 Bytes hat, aber wenn Sie auf 0-Indizierung umschalten, können wir 109 Bytes machenseq(a=l)
diesseq(l)
so lange sein kann, wie die Eingabe mindestens 2 Elemente hat (ich habe gefragt, ob dies in Ordnung ist).05AB1E , 9 Bytes
Probieren Sie es online!
Verwendet eine 0-basierte Indizierung.
Erläuterung:
quelle
Japt
-x
,109 Bytes0-basiert
Versuch es
quelle
Gelee , 9 Bytes
Probieren Sie es online!
Monadischer Link, der eine Liste von Ganzzahlen aufnimmt und eine Ganzzahl zurückgibt, die die Anzahl der Ganzzahlen angibt, die nach dem Ausführen der Rotation mit 1-Indexierung bestehen bleiben.
Erläuterung
quelle
Python 2 ,
1041009793 BytesProbieren Sie es online!
0-basierte Indizierung.
Dreht zuerst jede Zahl und vergleicht dann das Ergebnis mit dem Ergebnis, aber sortiert.
Gerettet:
quelle
input()
:)def
(in Python 2 sind sie im Gegensatz zu Python 3 ziemlich nutzlos).s
Zeichenfolge umgeben .R ,
908885 BytesProbieren Sie es online!
Abgerollter Code mit Erklärung:
quelle
J ,
2826 Bytes-2 Bytes danke an Jonah
Probieren Sie es online!
quelle
"0
( online ausprobieren! ), Aber ansonsten sah ich keinen Weg, weiter Golf zu spielen.Stax ,
1110 BytesFühren Sie es aus und debuggen Sie es
Dieses Programm verwendet eine 0-basierte Indizierung und nimmt Eingaben als ein Array von Zeichenfolgen entgegen. Ich habe ein Byte gespart, indem ich die Gelegenheit der neuen Input Clarificatinos genutzt habe.
quelle
Perl 5
-pa
, 80 BytesProbieren Sie es online!
Übernimmt die Eingabe als durch Leerzeichen getrennte Zahlen in STDIN. gibt 1-basiertes Ergebnis.
quelle
Pyth , 15 Bytes
Probieren Sie es online! Verwendet eine 0-basierte Indizierung.
quelle
s
Die ursprüngliche Version des Codes hatte einenv
ähnlichen Effekt. Ich bearbeite es wieder inAPL + WIN,
23, 21,19 Bytes2 Bytes werden durch Eingabe der ganzen Zahlen als verschachtelter Vektor von Zeichen gespeichert
1 indiziert.
Probieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic
quelle
JavaScript (Node.js) ,
1079995 Byte-8 Bytes Vielen Dank an @Shaggy, dass er stattdessen eine Reihe von Zeichenfolgen akzeptiert. Weitere 4 Bytes davon golfen. Löst dieses Mal keinen Speicherfehler aus.
Probieren Sie es online!
JavaScript (Node.js) ,
111107 Bytes-4 Bytes Danke @Arnauld!
Probieren Sie es online!
JavaScript (Node.js) ,
113111 BytesProbieren Sie es online!
0-indiziert. Kann bei sehr großen Einträgen einen Speicherfehler auslösen.
quelle
Perl 6 , 50 Bytes
Probieren Sie es online!
0-basierte Indizierung. Außerdem wurde ein Rakudo-Bug entdeckt .
Erläuterung
quelle
PHP ,
159141134130 BytesProbieren Sie es online!
Nullbasierte Indizierung.
Ungolfed:
quelle
.=''
?K (Kona) ,
2521 Bytes-4 Bytes dank ngn!
Probieren Sie es online!
quelle
{.:y!x}'[$x;t:!#x]
->.:'(t:!#x)!'$x
T-SQL-Abfrage, 99 Byte
Sql hat keine rotierende Methode, daher musste ich meine eigene Syntax implementieren, da dies eine Abfrage ist, die ohne Schleifen ausgeführt werden musste.
0-basierte Indizierung.
Verwendung einer Tabellenvariablen als Eingabe.
Probieren Sie es online aus
quelle
Symbol , 141 Bytes
Probieren Sie es online!
1-basierte Indizierung
quelle
Perl 5 , 104 Bytes
Probieren Sie es online!
0-basierte Indizierung in Perl. Ungolfed und kommentiert:
quelle
Rubin
-ap
, 77 Bytes1-indiziert. Wurde temporär gelöscht, weil ich einen Teil der Spezifikation verpasst habe.
-p
Liest eine STDIN-Zeile und gibt sie$_
am Ende aus.-a
teilt die gelesene Zeile durch Leerzeichen und speichert sie als$F
.Probieren Sie es online!
quelle
[...].join.to_i
durcheval [...]*''
eval
diese als Basis-8-Zahl interpretiert wird, was unsere Zählungen durcheinander bringen könnte ...Wolfram Language (Mathematica) , 65 Byte
Probieren Sie es online!
1-basiert. Wir nehmen die Eingabe als Liste von Ziffernlisten, was funktioniert, weil Mathematica die Listen nach Länge sortiert und dann lexikographisch, dh genau wie die ursprünglichen Zahlen.
quelle
Bash ,
204201 BytesDas einzig Interessante hier ist (möglicherweise) die Verwendung von
eval
. Der Algorithmus ist auch insofern klobig, als er eine sortierte Liste erstellt und diese dann liest, um geänderte Indizes zu bestimmen.1-basierte Lösung. Mein Dank geht an @RobinRyder für den hilfreichen Rotationsalgorithmus.
Probieren Sie es online!
Überarbeiteter Code nach Kevins Kommentaren; Probieren Sie es online!
quelle
;}
. Sie können auch Ihre erste Schleife in ändernfor((i=0;++i<=$#;));
.Scala ,
200160 ByteProbieren Sie es online!
0-indiziert. 160 Zeichen nach Entfernen von Einrückungen und Zeilenumbrüchen. Dies druckt 6:
quelle