Eine Schanzennummer ist eine Zahl mit der gleichen Ziffer in der ersten und der letzten , aber das ist noch nicht alles. Bei einer Bergzahl steigen die ersten Ziffern stark an und die letzten Ziffern fallen stark ab. Die größte Ziffer kann wiederholt werden .
Hier ist ein Beispiel für eine Bergnummer:
12377731 | 1237... | ...731
^ same ^ | strictly increasing | strictly decreasing
---------+---------------------+---------------------
12377731
^^^ okay because largest digit can be repeated
Das ist nicht :
4588774 | ...8774
| ^^ not the largest digit
| so this has to be strictly decreasing
| but it's not, so not a hill number
Herausforderung
Schreiben Sie bei einer positiven Ganzzahl ein vollständiges Programm oder eine Funktion, die für Bergzahlen die Wahrheit zurückgibt, bei anderen Werten jedoch die Wahrheit.
Anmerkungen:
- Eingabe und Ausgabe können in jedem vernünftigen Format erfolgen .
- Dies ist Code-Golf, also gewinnt die kürzeste Antwort in jeder Sprache!
Testfälle
12321 -> Truthy
1233321 -> Truthy
99 -> Truthy
3 -> Truthy
234567992 -> Truthy
1232 -> Falsy
778896 -> Falsy
23232 -> Falsy
45566554 -> Falsy
5645 -> Falsy
code-golf
decision-problem
number-theory
nicht definiert
quelle
quelle
222222222
? Ist es eine flache Hügelzahl?222222222
ist eine Schanzennummer, die größte Ziffer ist 2 und kann daher wiederholt werden1230321
eine Hügelzahl?Antworten:
Gelee , 8 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
JavaScript (ES6),
6254 BytesÜbernimmt die Eingabe als Zeichenfolge. Gibt einen Booleschen Wert zurück.
Probieren Sie es online!
Kommentiert
JavaScript (ES6), 65 Byte
Probieren Sie es online!
Wie?
Beispiel:
Dieses Array wird in eine Zeichenfolge umgewandelt, die Folgendes ergibt:
Wir wenden den folgenden regulären Ausdruck an:
Schließlich testen wir auch, ob die letzte Ziffer
p
gleich der ersten Ziffer ists[0]
.quelle
Pyth, 16 Bytes
Probieren Sie die Testsuite aus .
quelle
Jelly , 11 Bytes
Erläuterung:
Probieren Sie es online!
quelle
Perl 6 , 39 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 2 ,
114112 BytesProbieren Sie es online!
quelle
R , 65 Bytes
Nimmt Saiten. Übernahm die Idee, die Sortierinvarianz anhand der Pyth-Antwort zu überprüfen.
Probieren Sie es online!
quelle
05AB1E ,
19171312 Bytes-5 Bytes, indem Sie einen Port für die Pyth -Antwort von @lirtosiast erstellen .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Â{RQ
kann alternativ(Â{Q
für die gleiche Anzahl von Bytes verwendet werden, wobei(
jedes Zeichen negiert wird: Probieren Sie es online aus .quelle
J, 23 Bytes
Idee aus den Jelly-Antworten gestohlen. Ich wollte nur sehen, wie kurz ich es in J schaffen könnte.
Probieren Sie es online!
quelle
MATL , 12 Bytes
Probieren Sie es online!
Erläuterung
Die Eingabe ist eine Ziffernfolge. Ausgabe ist ein
1
oder0
. Die Nummer222222
ist eine Schanzennummer nach diesem Programm. 2 Bytes gespart, indem Dennis 'Methode zur Überprüfung der Gleichheit der ersten und letzten Ziffer kopiert wurde.quelle
Python 2 , 53 Bytes
Übernimmt die Eingabe als Zeichenfolge. Die Ausgabe erfolgt über das Vorhandensein oder Fehlen einer Ausnahme .
Probieren Sie es online!
Python 2 , 62 Bytes
Übernimmt die Eingabe als Zeichenfolge und gibt einen Booleschen Wert zurück.
Probieren Sie es online!
quelle
Mathematica / Wolfram-Sprache,
6964 BytesFunktion pur. Übernimmt die Eingabe als Ganzzahl und gibt
True
oder zurückFalse
.Erläuterung:
Die erste Klausel prüft die "Hügeligkeit":
IntegerDigits
: Ermittelt die Ziffern einer Ganzzahl. Speichern iny
.-Differences
: Nehmen Sie aufeinanderfolgende Differenzen und Flip-Zeichen.Sign
: Ersetzen Sie jeden Eintrag durch +1, wenn er positiv ist, 0, wenn er null ist, und -1, wenn er negativ ist. Speichern inx
.Sort
: Liste von +1, 0, -1 vom kleinsten zum größten sortieren. Vergleiche mit der ursprünglichen Liste inx
.Die zweite Klausel prüft, ob die erste und die letzte Ziffer gleich sind.
Ein Tipp für die Verfeinerung dieses Codes an @IanMiller.
quelle
IntegerDigits
undDifferences
ziemlich lange Funktionsnamen sind, ist etwas ärgerlich.Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&
Japt, 11 Bytes
Übernimmt die Eingabe als Ziffernfeld.
Probieren Sie es aus oder führen Sie alle Testfälle aus
quelle
Retina 0.8.2 , 52 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
Wandle jede Ziffer zweimal in unär um, getrennt durch
;
s und abgeschlossen durch,
s. Sie können sich das Ergebnis dann jedoch als die erste Ziffer vorstellen, a;
, dann alle Paare benachbarter Ziffern, die Ziffern jedes Paares getrennt durch,
und die Paare getrennt durch;
s, dann eine andere;
, dann die letzte Ziffer, dann ein Finale,
.Subtrahieren Sie die Paare benachbarter Ziffern. Dies lässt
;,;
für gleiche Ziffern und1
s für ungleiche Ziffern auf der größeren Seite. (Dies könnte als Teil des folgenden regulären Ausdrucks erfolgen, aber das wäre natürlich nicht so golfen.)Passen Sie die erste Ziffer an, dann eine beliebige Anzahl von Paaren aufsteigender Ziffern, dann eine beliebige Anzahl von Paaren gleicher Ziffern, dann eine beliebige Anzahl von Paaren absteigender Ziffern, und passen Sie die erste Ziffer ganz am Ende erneut an.
quelle
Rot , 181 Bytes
Probieren Sie es online!
Besser lesbar:
quelle
Powershell, 77 Bytes
Weniger Golf-Testskript:
Ausgabe:
quelle
C # (Visual C # Interactive Compiler) , 161 Byte
Probieren Sie es online!
Hier ist eine Übersicht, wie das funktioniert ...
string
quelle
Python 3 , 114 Bytes
Probieren Sie es online!
Viel länger als einige Python 2-Lösungen, aber diese basiert auf Def und gefällt mir.
quelle
Ruby , 47 Bytes
Probieren Sie es online!
Eingabe als Array von Ziffern, Ausgabe ist boolesch.
quelle