(Inspiriert von diesem Beitrag über Rätsel. ACHTUNG: SPOILER FÜR DIESE PUZZLE SIND UNTEN.)
Die Standard-Telefontastatur korreliert Buchstaben und Zahlen wie folgt:
1 ->
2 -> ABC
3 -> DEF
4 -> GHI
5 -> JKL
6 -> MNO
7 -> PQRS
8 -> TUV
9 -> WXYZ
0 ->
Ein gegebenes Eingabewort wird als ein geordnetes Wort definiert, wenn beim Umsetzen auf die Tastatur unter Verwendung der obigen Angaben die resultierende Zahl entweder nicht abnimmt oder nicht zunimmt. Mit anderen Worten, die resultierende Anzahl kann nicht sowohl steigen als auch fallen abnehmen.
Zum Beispiel CAT
übersetzt das Wort in 228
, was nicht abnehmend ist und somit ein geordnetes Wort. Das Wort DOG
ist jedoch364
, was sowohl zunimmt als auch abnimmt und somit kein geordnetes Wort ist.
Die Herausforderung
Geben Sie bei gegebenem Wort aus, ob es bestellt ist oder nicht.
Eingang
- Ein Wort (nicht unbedingt ein Wörterbuchwort), das nur aus ASCII-Buchstaben (
[A-Z]
oder[a-z]
Buchstaben) in einem geeigneten Format besteht . - Sie können wählen, ob die Eingabe nur in Groß- oder Kleinbuchstaben erfolgen soll, sie muss jedoch konsistent sein.
- Das Wort wird mindestens 3 Zeichen lang sein.
Ausgabe
Ein konsistenter Wert für Wahrhaftigkeit / Falschheit, der angibt , ob das Eingabewort geordnet ist (Wahrhaftigkeit) oder nicht (Falschheit).
Regeln
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit andere Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
Hier sind einige geordnete Wörter (dh wahrheitsgemäß) und es gibt mehr über das verknüpfte Rätsel.
CAT
TAC
AAA
DEMONS
SKID
LKJONMSRQP
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Hier sind einige nicht geordnete Wörter (zB Falsey)
DOG
GOD
ROSE
COFFEE
JKLMNOGHI
abc->t9
und diese Herausforderung ist die Überprüfung Monotonie?abc->t9
.AAA
Antworten:
Python 2 ,
16414813277 Bytes-16 Bytes dank Rods Vorschlag an anderer Stelle . Ein verdammt -55 Bytes dank Arnold Palmer.
Probieren Sie es online!
Die Eingabe muss in Großbuchstaben erfolgen. Outputs
True
oderFalse
basierend auf seiner Ordnungsmäßigkeit.Erläuterung
Die erste Zeile ordnet jeden Buchstaben einer Zahl zu.
Dies funktioniert basierend auf:
* Werte sind gerundet. : P
Die zweite Zeile gibt aus, ob die Liste der Nummern aufsteigend oder absteigend sortiert ist.
quelle
JavaScript (ES6),
83 ... 7170 BytesGibt einen Booleschen Wert zurück.
Testfälle
Code-Snippet anzeigen
Wie?
Briefkonvertierung
Wir verwenden
parseInt(c, 35)
, um jeden Buchstaben der Eingabezeichenfolge in eine Zahl in [ 10 .. 34 ] umzuwandeln . Da es sich um die Basis 35 handelt, wird stattdessen "Z" in konvertiertNaN
.Der Ausdruck
* .32 | 0
ordnet diese Zahl dem Intervall [ 3 .. 10 ] zu, was zu 8 korrekten Buchstabengruppen für "A" bis "Y" führt . Wir müssen|| 10
den richtigen Wert für "Z" erhalten .Test bestellen
Wir verfolgen die Anzeichen von Unterschieden zwischen aufeinanderfolgenden Zahlen in der Bitmaske v , die anfänglich auf 3 gesetzt war (0b11):
Der vorherige Wert wird in derselben Variablen x wie der Eingang gespeichert . Dies stellt sicher, dass die erste Iteration, bei der kein vorheriger Wert vorhanden ist, kein Bit löscht, da eine Zeichenfolge, die nur Buchstaben enthält, weder größer noch kleiner als eine Zahl ist:
Ein Wort wird geordnet, wenn nicht beide Zeichen angetroffen werden, was zu v = 0 führt und zum
every()
Scheitern führt.quelle
Jelly ,
28, 27, 25, 23, 22, 21, 19,18 BytesProbieren Sie es online!
Es hat viel Spaß gemacht, dies zu schreiben!
Erläuterung:
Vielen Dank an @ErikTheOutgolfer, @leakynun und @BusinessCat für alle sparenden Bytes. :)
quelle
05AB1E , 36 Bytes
Probieren Sie es online!
quelle
.•1нJ©½è`ÇHø¹á₂N¸°…ÈáÀ•#
durchA•22ā₂•S£
.MATL ,
2625 BytesDie Eingabe erfolgt in Großbuchstaben. Ausgang ist
1
oder0
.Probieren Sie es online!
Erläuterung
quelle
Schale ,
22, 21, 1918 BytesReturns
1
für truthy Eingänge,0
für falsche. Eingaben müssen in Großbuchstaben erfolgen. Besteht alle Testfälle. Probieren Sie es online!Erläuterung
quelle
Python 2 , 60 Bytes
Probieren Sie es online!
Akzeptiert Eingaben in Kleinbuchstaben.
Wie es funktioniert
⌊3681 / x ⌋ verringert sich von
a
;c
undd
;f
undg
;i
undj
;l
undm
;o
undp
;s
undt
;v
undw
;z
.quelle
C ++,
375199195194 BytesDank Shaggys JavaScript-Antwort:
-5 Bytes dank Zacharý
quelle
int j=1,i=0,d=0
die for-Schleife verschieben?i
undd
außerhalb des Loop-Blocks verwendet werden, kann ich nichti==0||d==0
==>i*d==0
.!(i*d)
funktionieren (Entfernen des Leerzeichens danachreturn
)05AB1E , 30 Bytes
Probieren Sie es online!
-1 dank Magic Octopus Urn .
quelle
¥0K0.SË
denn¥0‹Ë
nicht richtig benutzt? Ich kann nicht sagen, ob das0.S
nötig ist.¥0K0‹Ë
scheint zu funktionieren.Netzhaut , 65 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
Ändern Sie den ersten Buchstaben jeder Taste in eine Ziffer. (Dies ist um 1 verschoben, aber das spielt für eine Überprüfung aufsteigend / absteigend keine Rolle. Auf der anderen Seite würden Nullen mein Leben erschweren, sodass ich ein Füllzeichen belassen habe.)
Mische alle verbleibenden Buchstaben um 1 und wiederhole, bis sie alle in Ziffern umgewandelt wurden.
Konvertieren Sie die Ziffern in unäre, jedoch nur einmal pro Lauf identischer Ziffern. Die unären Werte werden mit einem
<
...... aber wenn sich herausstellt, dass der LHS-Wert größer ist als der RHS-Wert, korrigieren Sie den
<
to- Wert>
.Löschen Sie die
1
nicht mehr benötigten s.Überprüfen Sie, ob das Wort geordnet ist. (Das Ende
>
stammt von der letzten Ziffer, die immer größer ist als das Leerzeichen, das darauf folgt.)quelle
Pyth , 23 Bytes
Eine meiner ersten nicht trivialen Pyth-Antworten! 6 Bytes dank @LeakyNun gespart. Die anfängliche Lösung ist unten.
Test Suite.
Pyth , 29 Bytes
Test Suite.
Erläuterung
quelle
05AB1E ,
2117 BytesCode
Verwendet die 05AB1E- Codierung.
Probieren Sie es online! oder Überprüfen Sie alle Testfälle!
Erläuterung
Dies ordnet nun im Wesentlichen die folgenden Buchstaben den folgenden Zahlen zu:
quelle
JavaScript (ES6),
1079795928885 ByteFunktioniert mit Strings in Groß- und Kleinschreibung. Returns
1
für truthy oder0
für Falsey.Versuch es
quelle
Math.min((parseInt(c,36)-3)/3.13|0,9)
stattdessen"2..9"[parseInt(c,36)-10]
, um einige Bytes zu speichernAAA
.Gaia ,
29272517 BytesProbieren Sie es online!
Erläuterung
quelle
05AB1E , 13 Bytes
Immer wenn ich eine Frage auf dem Nummernblock sehe, muss ich eine pi-basierte Antwort geben.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle
quelle
Gelee , 32 Bytes
Probieren Sie es online!
quelle
32222323
so, dass nur 2 Bytes gespart werden.C # (.NET Core) , 133 Byte
Probieren Sie es online!
Ich glaube, es gibt etwas Platz zum Speichern, aber C # ist keine prägnante Sprache, also vielleicht auch nicht. Ungolfed:
Insbesondere denke ich, dass es eine kürzere Möglichkeit gibt, die endgültige Gültigkeitsprüfung auszudrücken, möglicherweise eine Möglichkeit, sie mit der zu verknüpfen
Zip
. Einen Weg zu finden, um das auszudrücken,Zip
ohne dass ein temporärer Speicher für die Daten erforderlich ist,Skip
würde ebenfalls etwas sparen, aber ich bezweifle, dass es etwas prägnanteres dafür gibt.quelle
Python 3 ,
143147148149130 BytesDas Beste, was ich jetzt tun kann. Die Crude-Funktion wandelt den Buchstaben in eine Zahl um, die auf dem ASCII-Code basiert. Es müssen definitiv einige Verbesserungen vorgenommen werden. 0 ist wahr, 1 ist falsch (sorry). Dank Rod 10 Bytes gespart, dank Mr. Xcoder weitere 3 Bytes.
Probieren Sie es online!
quelle
x=[f(a)-f(b)for a,b in zip(s,s[1:])]
einige Bytes speichernmin(int((ord(c)-58)/3.13),9)
ist ein kürzerer Weg, um die Zeichen zu konvertierenPython 2 ,
111103 Bytes-8 Bytes dank @Arnold Palmer: nicht
lower()
erforderlichProbieren Sie es online!
quelle
.lower()
da die Eingabe in jedem von Ihnen angegebenen Fall erfolgen kann.PHP 7,
98 + 1 95 + 184 + 1 Bytesein Golfhafen von Arnauld´s Antwort .
akzeptiert Großbuchstaben; leere Ausgabe für falsch,
1
für wahr.Laufen Sie als Pipe mit
-nR
oder versuchen Sie es online .ursprünglicher Beitrag:
quelle
CJam,
37313027 BytesProbieren Sie es online
Natürlich wird die hässliche Version kürzer ...
quelle
C (gcc) ,
183 169 153117 BytesProbieren Sie es online!
Alte Lösung:
8 Bytes dank ThePirateBay gespart.
Alte alte Lösung:
Alt alt alt Lösung:
quelle
TI-Basic,
9266 BytesKonvertiert jedes Zeichen in der Zeichenfolge in eine Ganzzahl von 0 bis 7 und berechnet die Differenz zwischen den einzelnen aufeinanderfolgenden Elementen. prüft dann, ob die minimale und die maximale Differenz das gleiche Vorzeichen haben (oder 0 ist).
quelle
ΔList(int(4^-1seq(inString("DEF GHI JKL MNO PQRSTUV WXYZ",sub(Ans,I,1))+3,I,1,length(Ans
spart ein Byte.Zsh ,
73 6957 Bytes-12 Bytes mit der
3681/code
Konvertierung von @ anders-kaseorg .Probieren Sie es online! Probieren Sie es online!Probieren Sie es online!Ein paar Dinge, die wir missbrauchen:
((statement,statement,...))
ist eine Folge von arithmetischen Ausdrücken, die die Wahrheit zurückgibt, wenn die letzte Anweisung nicht Null ist.nur ein Paarohne Klammern verwendet wurde. Ein Byte könnte gespeichert werden, wenn!
es weniger eng gebunden ist als&
.0
in arithmetischen Erweiterungen auf erweitert.Die Funktion, mit der wir der Tastaturnummer zuordnen, istda wir nur den Wechsel zwischen Codes benötigen , nehmen wir keine lineare Anpassung vor.CODE / 3.2 - 18
(mit einem Sonderfall fürZ
), aber2 Bytes können gespeichert werden, wenn die Wahrheits- / Falschheitswerte ausgetauscht werden können.
quelle