Selbstlimitierende Listen
Stellen Sie sich eine nicht leere Liste L vor, die nichtnegative ganze Zahlen enthält. Ein Lauf in L ist eine zusammenhängende Unterliste gleicher Elemente, die nicht länger gemacht werden kann. Zum Beispiel können die Läufe von [0,0,1,1,3,3,3,2,1,1] sind [0,0], [1,1], [3,3,3], [2 ], [1,1] . Die Liste L ist selbstlimitierend, wenn für jede ganze Zahl N ≥ 1 die Anzahl der Vorkommen von N kleiner oder gleich der Anzahl der Durchläufe von N-1 ist . Die obige Liste ist nicht selbstlimitierend, da es 4 Vorkommen von 1 gibt , sondern nur einen Lauf von 0 s.
Hier ist ein Beispiel einer selbstlimitierenden Liste: [0,0,3,4,1,0,2,1,1,0,2,1,0,0,0,1,0] . Es hat
- 5 Läufe von 0 und 5 Vorkommen von 1 ,
- 4 Läufe von 1 und 2 Vorkommen von 2 ,
- 2 Läufe von 2 und 1 Auftreten von 3 ,
- 1 Lauf von 3 und 1 Auftreten von 4 ,
- 1 Lauf von 4 und keine Vorkommen von 5 ,
- keine Vorkommen von anderen ganzen Zahlen.
Die Aufgabe
Ihre Aufgabe ist es, zu entscheiden, ob eine Liste selbstlimitierend ist. Insbesondere soll Ihre Eingabe eine nicht leere Liste nichtnegativer Ganzzahlen sein. Wenn sich die Liste selbst einschränkt, ist Ihre Ausgabe wahrheitsgetreu. sonst ist es falsch. Eingabe und Ausgabe können in jedem vernünftigen Format erfolgen.
Die niedrigste Byteanzahl in jeder Programmiersprache ist der Gewinner. Standard Code-Golf .
Testfälle
Wahrheitsinstanzen:
[0]
[1,0]
[0,1,1,0,2]
[3,1,1,0,0,2,0,0]
[5,0,4,1,3,0,2,2,0,1,1,1,0]
[0,0,1,1,0,0,1,1,0,0,2,2,0,0]
[6,0,0,0,2,2,1,0,5,0,3,4,0,1,1,1]
[5,0,1,0,0,0,0,4,0,3,1,1,1,2,2,0,0,0,0,0]
[4,5,1,3,2,0,5,2,0,3,0,1,0,1,0,0,0,1,0,0,1,0,3,4,4,0,2,6,0,2,6]
[0,4,1,3,10,6,0,1,3,7,9,5,5,0,7,4,2,2,5,0,1,3,8,8,11,0,0,6,2,1,1,2,0,4]
Falsche Instanzen:
[2]
[1,1,0]
[0,0,1,1,1,0,0,2]
[0,1,0,1,1,2,2,3,0,0,4,6]
[1,1,2,1,2,0,2,0,3,0,0,2,2,1,2,3,2,0,1,1,1,0,0,3,3,0]
[3,4,1,0,0,0,5,5,0,2,2,0,0,0,0,0,2,0,1,1,0,4,3,5,4,3]
[1,0,0,0,2,5,3,1,1,0,3,3,1,3,5,4,0,4,0,0,2,0,2,1,1,5,0,0,2,4,4,0,2,0,1,4,4,2,3,3,5,3,4,0,2,0,5]
[4,3,1,0,0,4,6,6,1,0,1,2,1,3,0,1,0,2,0,3,4,0,2,1,1,3,0,2,2,2,0,5,5,0,5,2,5,5,0,4,3,2,3,1,1,3,5,1,4,1,6,2,6,2,4,0,4,0,4,5,3,3,0,0,6,1,0,0,0,6,2,1,0,1,2,6,2,4]
[5,1,1,1,0,2,0,6,1,0,2,1,2,2,5,3,1,0,0,0,3,2,3,0,1,1,0,1,0,1,1,2,0,6,4,1,2,1,1,6,4,1,2,2,4,0,1,2,2,1,3,0,1,2,0,0,0,2,0,2,2,0,1,0,0,1,3,0,0,0,6,2,0,1,0,1,2,1,1,1,0,4,0,0,5,2,0,0,0,4,1,2,2,2,2,0,5,3,2,4,5,0,5]
[2]
auch, aber solche Fälle sollten falsch sein, ja.Antworten:
Perl 6 , 29 Bytes
Probieren Sie es online!
Sehr schöne Herausforderung für Perl 6. Verwendet den Teilmengenoperator für Taschen (ganzzahlige Mengen). Erläuterung:
quelle
JavaScript (ES6),
9289 BytesProbieren Sie es online!
Wie?
Das Array c [] wird verwendet, um sowohl die Anzahl der Durchläufe als auch die Anzahl der ganzzahligen Vorkommen zu speichern. Läufe werden auf nicht-negative Indizes gespeichert und integer Vorkommen an 1's-Komplement Indizes gespeichert ( c [-1] = Anzahl von 0 's, c [-2] = Anzahl der 1 ist, etc.).
Negative Indizes werden tatsächlich als Eigenschaften des zugrunde liegenden Array-Objekts gespeichert, und .some () durchläuft sie nicht.
quelle
Perl 5
-p
,494844 BytesProbieren Sie es online!
quelle
Gelee , 10 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Jelly , 19 Bytes
Probieren Sie es online!
quelle
Gelee , 17 Bytes
Probieren Sie es online!
quelle
Python 3 , 94 Bytes
Probieren Sie es online!
quelle
sum(1for ... if x==j!=y)
=>sum(x==j!=y for ...)
.Japt , 21 Bytes
Online testen!
quelle
Stax ,
139 BytesDennis fand einen viel besseren Algorithmus . Ich habe es schamlos auf stax portiert.
Führen Sie es online aus und debuggen Sie es
Ausgepackt, ungolfed und kommentiert, so sieht es aus.
Führen Sie dieses aus
Alte Antwort:
Führen Sie es aus und debuggen Sie es
Es durchläuft die Eingabe und überprüft die Bedingungen:
> 0
?occurrences(element) >= runs(element - 1)
?Wenn eine dieser Bedingungen für ein Element zutrifft, ist dieses Element konform. Wenn alle Elemente kompatibel sind, ist das Ergebnis
1
.Hier ist die entpackte, ungolfierte, kommentierte Darstellung desselben Programms.
Führen Sie dieses aus
quelle
Haskell, 80 Bytes
Probieren Sie es online!
quelle