Schreiben Sie bei einer nicht negativen Ganzzahleingabe ein Programm, das die Zahl in Hexadezimal umwandelt und einen Wahrheitswert zurückgibt, wenn die Hexadezimalform der Zahl nur die A
durchgehenden Zeichen F
und ansonsten einen False-Wert enthält.
Testfälle
10
==> True (A in hexadecimal)
100
==> False (64 in hexadecimal)
161
==> False (A1 in hexadecimal)
11259375
==> True (ABCDEF in hexadecimal)
0
==> False (0 in hexadecimal)
Bonus: -40 Byte, wenn Ihr Programm Only letters
für die oben beschriebene Herausforderung druckt , Only numbers
wenn die hexadezimale Version der Nummer nur die Ziffern enthält 0-9
und Mix
wenn die hexadezimale Nummer mindestens eine Ziffer und mindestens einen Buchstaben enthält.
Das ist Code Golf. Es gelten Standardregeln. Kürzester Code in Bytes gewinnt. Es sind entweder Funktionen oder vollständige Programme zulässig.
code-golf
number
base-conversion
hexadecimal
Arcturus
quelle
quelle
NaN
MixOnlynumbersletters
ist 21 ZeichenAntworten:
Pyth, 43 - 40 = 3 Bytes
Testsuite
Damit ist der Bonus erreicht.
Only numbers
und unterscheiden sichOnly letters
glücklicherweise nur um 4 buchstaben. printf-Formatierung wird mit verwendet%
.Das Auswahlsystem wird durchgeführt, indem sowohl der Schnittpunkt des Hex mit
G
dem Alphabet genommen als auch subtrahiert wirdG
. Wenn beides nicht falsch ist, handelt es sich um eine Mischung. Wenn die Schnittmenge falsch ist, sind es Zahlen und wenn die Subtraktion falsch ist, sind es Buchstaben.quelle
Pyth, 6 Bytes
Teste es hier
quelle
Gelee , 6 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
TeaScript , 11 Bytes
13 15 16Ziemlich einfach. Dies verwendet TeaScript 2.0. Sie können diese Version vom Github erhalten
Erläuterung
Probieren Sie es online aus (leicht modifizierte Version, die im Web funktioniert)
quelle
Python, 24 Bytes
Konvertiert die Eingabe in einen Hex-String (ohne
0x
Präfix) mit'%x'%n
. Überprüft, ob alle Zeichen größer sind als'9'
(welche Buchstaben sind), indem überprüft wird, ob dasmin
oben steht'9'
.quelle
'9'
ist 54. Wenn Sie also schreiben...>54
können, können Sie ein Byte speichern.MATL , 10
Beispiele
Erläuterung
Bonus Herausforderung: 53 - 40 = 13
Beispiele
Erläuterung
quelle
LabVIEW, 52-40 = 12 LabVIEW-Grundelemente
Loben Sie die Einbauten!
quelle
C
464337 BytesJetzt mit mehr Rekursion! (Danke Dennis):
Bonus: Noch kürzer (33 Bytes), scheitert aber an
x = 0
:F()
Nimmt einint
und gibt entweder0
(false) oder einen Wert ungleich Null (true) zurück.Ich habe nicht einmal versucht, den Bonus zu erreichen,
"MixOnly lettersnumbers"
nimmt 23 Bytes allein, die Verfolgung der neuen Bedingung hätte 9 zusätzliche Bytes erforderlich gemacht,printf()
ist 8 Bytes, was sich auf 40 summiert, was den Aufwand zunichte macht.Testleitung:
quelle
?:
? Ich musste es durch ersetzen||
, um es kompilieren zu können. Können Sie auch ein Byte speichern, indem Sie das*
durch ein ersetzen und&
so das()
s auf der linken Seite vermeiden (obwohl Sie dann ein Leerzeichen hinzufügen müssen)?a?:b
ist eine GNU-Erweiterung, die auswertet,a
oba
es sich um einen Wahrheitswert handelt, andernfalls umb
. Es ist praktisch, mit Null-Zeigern umzugehensend(message ?: "(no message)");
. Ich weiß, es ist nicht tragbar, aber Code-Portabilität ist nie ein Problem in Code Golf :)33
Bytes reduzieren, indem Sie dies tun:F(x){x=(x%16>9)*(x<16?:F(x/16));}
Dies missbraucht einen (GCC) Fehler, bei dem, wenn es keine Rückgabevariable in einer Funktion gibt und das Hauptargument gesetzt wurde, das Hauptargument in einigen Fällen automatisch zurückgegeben wird ( basierend darauf, welche Logik gemacht wurde), und dies ist zufällig einer dieser Fälle! Versuchen Sie es online: bit.ly/2pR52UHPython 3,
3029 Bytes1 Byte entfernt dank sysreq und Python 3.
Einfach
lambda
und in Scheiben schneiden.quelle
Perl 6 , 18 Bytes
Verwendungszweck:
quelle
Mathematica, 32 Bytes
Erläuterung:
quelle
Javascript, ES6, kein regulärer Ausdruck, 28 Bytes
Es gibt auch diese 27-Byte-Version, die jedoch den inversen Wert zurückgibt.
quelle
F=n=>!n||n%16>9&F(n>>4)
F=n=>n%16>9&&n<16|F(n>>4)
dann wäre wohl die kürzeste Zeit.||
, aber ich denke, Sie könnten damit durchkommen,&
anstatt es&&
in diesem Fall zu verwenden.Julia, 18 Bytes
Dies ist eine anonyme Funktion, die eine Ganzzahl akzeptiert und einen Booleschen Wert zurückgibt. Um es zu nennen, geben Sie ihm einen Namen, z
f=n->...
.Die Eingabe wird mithilfe von in eine hexadezimale Zeichenfolge konvertiert.
hex
Anschließend wird mithilfe von überprüft, ob die Eingabe vollständig aus alphabetischen Zeichen bestehtisalpha
.quelle
JavaScript ES6, 29
Kein Bonus
Mit dem neuen Wert von -40 ist der Bonus jetzt näher ... aber nicht genug. Bonuspunktzahl 70
71- 40 => 3031Test-Snippet (geben Sie eine Zahl in das Eingabefeld ein)
quelle
-n-1
=~n
, richtig?~n == -1
-n-1 == NaN
GS2 , 6 Bytes
Der Quellcode verwendet die CP437-Codierung. Probieren Sie es online!
Wie es funktioniert
quelle
Oktave, 22 Bytes
quelle
Java,
464438 BytesZiemlich einfacher Einzeiler, der die Ganzzahl in eine hexadezimale Zeichenfolge umwandelt und mithilfe von Regex feststellt, ob alle Zeichen Buchstaben sind.
-2 Bytes dank @ Eng.Fouad.
quelle
"[a-f]+"
würde 2 Bytes sparen.+
- es ist eine Verschwendung von Byte.matches
gibt true zurück, wenn die gesamte Zeichenfolge mit der angegebenen Regex übereinstimmen kann.[a-f]
ohne das Pluszeichen ist falsch, da es nicht mit der gesamten Zeichenfolge übereinstimmt , da es mehr als ein Zeichen enthält; es wäre genau dann, wenn ein gültiges Zeichen vorhanden ist.CJam (
98 Bytes)Online-Demo
quelle
{Gb$N<!}
Ruby, 19 Bytes
Ungolfed:
Verwendungszweck:
Mit Bonus 70 - 40 = 30 Bytes
Verwendungszweck:
quelle
'%x'%n!~/\d/
ist eine kürzere Prüfung für die erste Lösung, und die zweite Lösung hat eine unformatierte Byteanzahl von 70, nicht von 75.Perl, 69 - 40 = 29 Bytes
quelle
Ceylon, 55 Bytes
Ganz einfach ... Wir formatieren
n
als Hexadezimalzahl (die eine Zeichenfolge erzeugt), rufen für jedes Zeichen dieser Zeichenfolge die.digit
Zahl auf (die true zurückgibt, wenn es sich um eine Ziffer handelt), prüfen dann, ob eine davon true ist, und negieren diese.Die Version mit Bonus hat eine viel höhere Punktzahl von 119 - 25 = 94 :
Ich bin mir nicht sicher, wie jemand eine Bonusversion so kurz machen könnte, dass sie besser ist als die ohne Bonus, auch wenn diese Saiten alleine eine Länge von 28 haben. Vielleicht eine Sprache, die es wirklich schwer macht, einen Wahrheitswert zu produzieren.
Hier ist eine formatierte Version:
quelle
Rust, 70 Bytes
Weil, weißt du,
JavaRust.Eigentlich ist es aber ziemlich elegant:
Aber es ist eine Schande, dass die Funktionsdefinition Boilerplate so lang ist ...: P
quelle
CJam, 44 Bytes - 40 Bonus = 4 Bytes
Probieren Sie es hier ~
quelle
Im Ernst, 12 Bytes
Hex Dump:
Probieren Sie es online
Es ist das gleiche wie bei den anderen Antworten in der Stapelsprache. Es wären nur 7 Bytes, wenn die Zeichenfolgensubtraktion noch ernsthaft unterstützt würde.
BEARBEITEN: Unterstützt nun ernsthaft die Zeichenfolgensubtraktion und die folgende 7-Byte-Lösung funktioniert jetzt:
Hex Dump:
Probieren Sie es online
quelle
4╙,¡#S;ú∩S=
(oder4ª
oder8τ
, viele Möglichkeiten,:16:
in zwei Bytes zu buchstabieren : P)05AB1E , 2 Bytes (nicht konkurrierend)
Code:
Ha! Das sind zwei Bytes! Leider nicht konkurrierend, da diese Sprache die Herausforderung datiert :(
Erläuterung:
Probieren Sie es online! oder Überprüfen Sie alle Testfälle!
quelle
hdÔ©1åi•4?ŸâτΛ•}®0åi•4?ŸàpÕTà•}®g2Qi•²
•} 36B` für den Bonus, der ... 6 mehr ergibt! Wooooo Boni!Python 3, 28 Bytes
quelle
Common Lisp, 40 Bytes
Probieren Sie es online!
quelle
SmileBASIC 3.2.1, 78 Bytes
quelle
81
.0-127
, daher beträgt Ihre Byteanzahl81
.Japt, 12 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
!!UsG r"\\d
könnte funktionieren und ein Byte speichernGema, 41 Zeichen
In Gema gibt es keinen Booleschen Wert, daher wird einfach "t" oder "f" ausgegeben.
Probelauf:
quelle