Herausforderung :
Überprüfen Sie, ob die angegebene Nummer eine bildet number staircase
oder nicht
Eingabe:
Eine Ganzzahl (größer als 0 und nicht dezimal). ANMERKUNG: Sie können Eingaben als Zeichenfolge oder als Array von Ziffern vornehmen.
Ausgabe :
Ein wahrer / falscher Wert, der davon abhängt, ob die Zahl eine Treppe bildet oder nicht
Anzahl Treppe:
Eine Zahlentreppe ist eine Ganzzahl, die von links nach rechts gelesen wird:
- Beginnt mit 1
- Darauf kann 2 folgen
- Darauf kann 3 folgen
- und so weiter bis
n
- dann steigt die Zahl ab n - 1
- dann n - 2
- dann n - 3
- und so weiter bis es 1 erreicht
Hinweis :
Das kann Teil wird verwendet , wenn die Länge , um anzuzeigen , dass> größer als 1. Wenn die Reihenfolge beachtet werden muß , wie es ist. dh: 12321
Beispiel
12321 ---> true
12345654321 ---> true
9 ---> false
1 ---> true
2 ---> false
123421 ---> false
112312318901323 ---> false
123456789101110987654321 ---> true
Hinweis :
Die angegebene Eingabe ist immer eine Ganzzahl größer als 0 und keine Dezimalzahl. Ihre Ausgabe muss ein truthy or falsy
Wert sein, der von der Eingabe abhängt
Beschränkungen :
Dies ist Code-Golf, so dass der kürzeste Code in Bytes (für jede Programmiersprache) gewinnt.
quelle
[1,2,3,4,5,6,7,8,9,1,0,1,1,1,0,9,8,7,6,5,4,3,2,1]
für123456789101110987654321
?Antworten:
R 97 Bytes
Probieren Sie es online!
Nimmt
n
als eincharacter
oder eininteger
; usingcharacter
liefert korrekte Ergebnisse für Ganzzahlen, die nicht genau als 64-Bit-Zahl angegeben werden könnendouble
.Erzeugt so lange Treppenhausnummern, bis mindestens eine gefunden
n
wird, und prüft dann auf Gleichheit.Gleichwertig:
quelle
function(n)
durchn=scan();
nicht kürzer? (für ganze Zahlen natürlich)Gelee , 5 Bytes
Probieren Sie es online!
Achtung: Sehr langsam (schnell für
1
und121
)! Bereite dichDL
darauf vor, es schneller zu machen.quelle
JavaScript (ES6),
62.57Byte2 Bytes gespart dank @ l4m2
Gibt einen Booleschen Wert zurück.
Probieren Sie es online!
Wie?
Beginnend mit k = 1 suchen wir am Anfang und am Ende des Strings nach k und wiederholen den Vorgang für den verbleibenden mittleren Teilstring rekursiv mit k + 1 . Die Rekursion stoppt, sobald keine Übereinstimmung mehr vorhanden ist. Die Eingabe ist eine Treppennummer, wenn der letzte Teilstring gleich k ist .
Beispiel für s = "1234321":
quelle
m[0]==s&
würde das Entfernen stattdessen dazu führen, dass alle Testfälle bestanden werden (bei anderen Fällen wie"123217"
).f=(s,k=1)=>(m=s.match(`^${k}(.*)${k}$`))?f(m[1],k+1):s==k
?Haskell ,
5554 Bytes-1 Byte Danke an Laikoni !
Probieren Sie es online!
quelle
Pyth,
1312 BytesDank RK ein Byte gespeichert.
Probieren Sie es hier aus
Erläuterung
Wenn Sie die Eingabe wirklich als Ganzzahl wünschen, können Sie sie
}Qmsjk+Sd_Std
stattdessen verwenden, dies ist jedoch erschreckend langsam.quelle
/
stattdessen verwenden,}Q
damit esQ
am Ende automatisch vervollständigt wirdPython 2 , 69 Bytes
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) ,
138107102 ByteProbieren Sie es online!
Erläuterung:
quelle
Zip...Skip
schlägt die Methode in meinem vorherigen Kommentar fehl[1,1]
, die zurückkehren sollte,true
wenn ich die Spezifikation verstehe. Ich habe es gelöscht.05AB1E ,
98 BytesWarnung: EXTREM LANGSAM!
g
Zum Anfang addieren , um es zu beschleunigen.Probieren Sie es online!
Erläuterung:
Alte Erklärung:
Probieren Sie es online!
quelle
gLη€ûJså
ist eine andere, bei der Sie die Vektorisierung der Palindromisierung mit€û
palindromize anzeigen können .gLη€ûJså
für ein 8-Byte, das TIO nicht in die Luft jagt.Python 2 , 77 Bytes
Probieren Sie es online!
quelle
Stax , 14 Bytes
Führen Sie es aus und debuggen Sie es
Sehr langsam für größere Zahlen.
quelle
Attache ,
575546 BytesProbieren Sie es online! Ah, das ist viel eleganter.
Mit
Generate
(49 Bytes):Erläuterung
Die Generierungsfunktion erstellt einfach die
N
th Treppenhausnummer. Dann wird diese Suche beendet, sobald sie`>=:`#&_
erfüllt ist. Erweitert ist dies:Dies endet also, sobald die Länge der Ausgabe der Erzeugungsfunktion mindestens der der Eingaben entspricht. Dadurch wird die kleinste Treppennummer generiert, die mindestens so lang ist wie die eingegebene Nummer. Wenn es sich bei der Eingabe um eine Treppennummer handelt, ist das Ergebnis dieselbe Treppennummer und ansonsten die nächstlängste Treppennummer. Daher ist eine einfache Überprüfung mit Gleichheit zur ursprünglichen Eingabe ausreichend, um festzustellen, ob es sich um eine Treppennummer handelt oder nicht.
Attache, 55 Bytes
Probieren Sie es online! Mit dem Plan der Rekursion.
quelle
J , 40 Bytes
Probieren Sie es online!
Ich bin nicht ganz glücklich mit dieser Lösung - viel
@
und Boxen<
.quelle
SNOBOL4 (CSNOBOL4) , 109 Bytes
Probieren Sie es online!
Seltsamerweise führt das Ersetzen
'1'
in der zweiten Zeile mit zum1
Fehlschlagen des Programms bei der Eingabe von1
.quelle
K , 36 Bytes
Nimmt einen String wie "12321" als Parameter.
Diese Funktion ist wie in einer langen Kette von Funktionsanwendungen geschrieben.
f g h x
Lesen Sie daher die kommentierten Versionen von unten nach oben.{x+1}
istlambda x: x+1
, x ist ein Standard-Parametername. Lesen Sie https://pastebin.com/cRwXJn7Z oder die Hilfe des Interpreters, um die Bedeutung des Operators zu erfahren.Wir generieren die Treppennummer mit
n
in der Mitte durch{,/$(1+!x),1+1_|!x}
:Die ganze Funktion
{|/($x)~/:{,/$(1+!x),1+1_|!x}'1+!#x}
:quelle
Haskell ,
646058 Bytes-6 danke an @BMO!
Probieren Sie es online!
quelle
12345678910987654321
, wenn Sie eine Liste mit so vielen Elementen erstellen können.Perl 5
-lp
, 49 BytesProbieren Sie es online!
0
= wahr, alles andere = falschquelle
Java 10, 142 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
Japt, 11 Bytes
Übernimmt die Eingabe als Zeichenfolge.
Versuch es
Erläuterung
Alternativ
109 BytesDiese Lösung, die Eingaben als Zeichenfolge oder Ganzzahl annehmen kann, gibt ein Array von Zahlen für die Richtigkeit zurück oder gibt schließlich einen Fehler für die Falschmeldung aus, wenn Ihr Browser zuvor nicht lahmgelegt wird. Mit Vorsicht verwenden.
Versuch es
quelle
Retina ,
4543 BytesProbieren Sie es online! Link enthält Testfälle. Bearbeiten: 2 Bytes dank @Leo gespeichert. Erläuterung:
Initialisiere
n
auf1
.Während
s
beginnt und endet mitn
:Löschen Sie
n
von den Endens
und erhöhen Sien
.Testen Sie, ob
n
noch etwas übrig ist.quelle
\d
s kann werden.
und dir zwei Bytes sparenRegex (PCRE) , 92 Bytes
Probieren Sie es online!
Ich bin offen für Vorschläge, um dies zu verbessern.
quelle
Vielen Dank an folgende Benutzer:
Python 2 , 147 Bytes
Probieren Sie es online!
quelle
true
undfalse
doch truthy und Falsey Werte.1
und0
würde zum Beispiels[0]
statt verwendenstartswith
? Fehler sind zulässig, und Sie können sagen, dass "1 für Treppenhaus ausgegeben wird, alles andere (einschließlich nichts) [da stderrr ignoriert wird] für Nicht-Treppenhaus".g
niemals 1 ist. Sie sollten diese Lösungen wahrscheinlich testen , bevor Sie sie veröffentlichen ...