Kinder, die das Zählen lernen, kennen oft Zahlenreihen, können diese jedoch nicht richtig zusammensetzen.
Zum Beispiel könnten sie sagen:
1,2,3,4,7,8,9,10
Manchmal werden Kinder bemerken, dass sie einige Zahlen übersprungen haben und gehen zurück:
1,2,3,4,7,8,5,6,7,8,9,10
Dies ist eindeutig das überlegene Muster. Wir müssen sie identifizieren.
So identifizieren Sie diese Listen:
Wir identifizieren das Minimum
M
und das MaximumN
der ListeWir gehen die Liste durch. Wenn die aktuelle Nummer größer oder gleich einem Mitglied der Liste rechts davon ist, entfernen wir die aktuelle Nummer.
Wenn die verbleibende Liste alle Zahlen von
M
bis enthältN
, geben wir einen Wahrheitswert zurück.
Sie können davon ausgehen, dass Ihre Eingabeliste mindestens 1 Element enthält. Sie können davon ausgehen, dass alle Ganzzahlen nicht negativ sind.
Testfälle:
Wahrheit:
0
10
0 0 0
1 0 1
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 0 1 2 3
0 1 2 3 4 5 5
0 1 1 2 2 3
0 3 6 1 4 7 2 5 8 3 4 5 6 7 8
1 3 5 7 2 3 4 5 6 7
5 6 0 1 2 3 6 7 4 5 6 7
5 6 7 8
5 5 6 7 8
4 6 7 8 3 4 5 6 7 8
Falsch:
1 0
4 3 2 1
1 2 3 7 8 9
0 1 2 3 1 3
0 1 2 3 1 3 4
0 1 2 3 1 3 2 4
0 1 2 3 1 3 2 4 3
1 3 5 7 2 4 6 8
0 1 2 1 3 4 5 6
4 5 6 3 4 5
Das ist Code-Golf , also machen Sie Ihre Antworten so kurz wie möglich!
1
später ein weiteres Element gibt ). Sie würden auch jedes andere Element entfernen (mit Ausnahme des letzten 1), so dass Sie am Ende0 1
nicht mit0 1 2 3 4 5
Antworten:
05AB1E , 5 Bytes
Ich bin nicht zu 100% sicher, dass dies funktioniert, aber es besteht alle Testfälle und ich konnte keine Situation finden, in der es fehlschlägt.
Probieren Sie es online!
quelle
Gelee ,
109 BytesProbieren Sie es online!
Wie es funktioniert
quelle
ɓ
ein relativ neues Feature?«\
meiner Meinung nach.Ruby ,
59 5441 BytesProbieren Sie es online!
quelle
Python 2 , 81 Bytes
Probieren Sie es online!
quelle
PHP ,
148130 Bytes-18 Bytes, danke @Christoph
Probieren Sie es online!
quelle
$argn
Ist immer eine Zeichenfolgeforeach
nicht funktioniert. Sie könnten$argv
ein Array als Eingabe verwenden, aber achten Sie darauf, dass es immer den Dateinamen als erstes Element enthält. Sie verwenden$m
und$n
nur ein einziges Mal so können Sie eine Menge von Bytes zu schaffen sparen$b
früher:$b=range(min($a),max($a));
. Die Besetzung(bool)
ist völlig unnötig.if($k>=$a[$s])$a[$i]=null;
zu$k<$a[$s]?:$a[$i]=-1;
. Mit Bezugnahme wir dies tun können:foreach($a as$i=>&$k)
(1 Byte) und$a[$i]
zu$k
(-4 Byte). Darüber hinaus können wir fallen,$s=$i
weil wir$i
jetzt direkt über iterieren können.$a=$argn;$b=range(min($a),max($a));foreach($a as$i=>&$k)for(;++$i<count($a);)$k<$a[$i]?:$k=-1;echo!array_diff($b,$a);
(117 Bytes). Aber es wird immer noch$argn
falsch verwendet.$a=explode(' ',$argn);
würde dies für 13 zusätzliche Bytes beheben.$_GET
als Input Array verwenden? In diesem Fall müssen keineexplode
zusätzlichen -6 Bytes verwendet werden, um die$b
Variable nicht zu verwenden~
es onlineJava 8,
264262 BytesErläuterung:
Probieren Sie es hier aus.
quelle
R,
8885 BytesDies kann wahrscheinlich weiter abgespielt werden. Durchläuft die Elemente von
x
, überprüft, ob alle anstehenden Werte größer sind, und behält nur dann dieses Element bei. Nach der Schleife wird eine Sequenz vonmin(x)
bis erstelltmax(x)
und geprüft,%in%
ob alle Werte in der beschnittenen Version von enthalten sindx
.quelle
function(n)all(unique(cummin(rev(n)))==max(n):min(n))
JavaScript (ES6), 60 Byte
Ungolfed:
Dies ist ein einfacher Algorithmus:
Iterieren Sie das Array in umgekehrter Reihenfolge, und stellen Sie sicher, dass jede Zahl (mit Ausnahme der ersten) um eins kleiner oder gleich einer bereits gesehenen Zahl ist.
Snippet:
Code-Snippet anzeigen
quelle
Haskell, 62 Bytes
Probieren Sie es online!
Eine direkte Implementierung der Definition, bei
g
der die Elemente entfernt werden, wenn sie> = sind, als die Elemente rechts davon.quelle
C #, 69 Bytes
Kurz gesagt:
s = Eingabe (n) Entspricht
dem Element s, wobei alle Elemente nach diesem Element (Skip (I) Ndex + 1 Elemente), der aktuelle Wert höher ist
zählt diese und , ob die Menge der erwarteten Menge entspricht ((max) imum Wert minus (min) imum) Anzahl von Zahlen
Probieren Sie es online!
quelle
JavaScript (ES6),
82737270 ByteGibt einen Booleschen Wert zurück.
Wie?
Wir iterieren auf jedem Element x des Eingabearrays a und verfolgen dabei den maximal angetroffenen Wert m und die Zahl -k von Werten, die nicht größer oder gleich einem Mitglied zu ihrer Rechten sind. Per Definition werden gültige Werte in streng aufsteigender Reihenfolge angezeigt.
Wir verwenden
filter()
stattdessenmap()
, damit alle Elemente herausgefiltert werden, bis k negativ wird. Auf diese Weise können wir das erste gültige Element isolieren, bei dem auch der Mindestwert des Arrays garantiert ist.Schließlich testen wir, ob
minimum - (maximum + 1) == -number_of_valid_elements
:Testfälle
Code-Snippet anzeigen
quelle