Es gibt so viele verschiedene Möglichkeiten auszudrücken, ob etwas wahr ist oder nicht! Das Ziel dieser Herausforderung ist es, eine standardisierte Ausgabe von truthy
oder falsy
für verschiedene Eingabe-Wahrheits- und Falschwerte zu erzeugen.
Für die Zwecke dieser Herausforderung werden die folgenden Eingaben als wahr angesehen:
- Eine Zeichenfolge, die eine vorzeichenbehaftete Ganzzahl mit einem Wert ungleich Null darstellt (enthält nur die Ziffern
[0-9]
,-
am Anfang steht eine Option ). Beachten Sie, dass die Zeichenfolge-0
niemals als Eingabe angegeben wird. Einer Ganzzahl ungleich Null wird niemals ein vorangestellt0
(dh01
wird niemals als Eingabe angegeben, ebenso-01
wird niemals als Eingabe angegeben). - Die Groß- und Kleinschreibung Saiten entspricht einem von
defined
,found
,nonnil
,non-nil
,on
,success
,t
,true
,y
, undyes
Für die Zwecke dieser Herausforderung werden die folgenden Eingaben als falsch angesehen:
- Die Zeichenfolge
0
. Wiederholte Nullen (00
,00...
) werden niemals als Eingabe angegeben. - Eine leere Zeichenfolge
- Die Groß- und Kleinschreibung Saiten entspricht einem von
f
,failure
,false
,n
,nan
,nil
,no
,notfound
,not-found
,null
,nullptr
,off
, undundefined
Eingang
Die Eingabe ist eine Zeichenfolge, die einen Wahrheits- / Falschwert darstellt. Die Zeichenfolge kann aus einer beliebigen Quelle stammen (stdio, Funktionsparameter usw.). Es gibt kein führendes / nachfolgendes Leerzeichen.
Die Eingabe stimmt garantiert mit einem der oben genannten zulässigen Wahrheits- / Falschwerte überein (dh Sie müssen keine Fehlerbehandlung bereitstellen).
Ausgabe
Ihr Programm / Ihre Funktion muss einen Wahrheits- / Falschwert ausgeben, der die "Wahrhaftigkeit" oder "Falschheit" der Eingabe darstellt. Sie dürfen nur genau 1 Wahrheits- und 1 Falschwert angeben, in den Ihre Ausgabe die Eingabe konvertieren muss (dies sind Ihre "standardisierten" Wahrheits- / Falschwertwerte). Die Ausgabe kann in jede gewünschte Senke geschrieben werden (stdio, Rückgabewert, Ausgabeparameter usw.).
Bitte geben Sie an, was truthy
und welchen falsy
Wert Sie in Ihrer Antwort gewählt haben.
Beispiel: Wenn Sie die Zeichenfolge true
als wahrheitsgemäßen Wert auswählen, können Sie nicht auch die Ganzzahl 1
für wahrheitsgemäß haben.
Testfälle
Testfälle werden formatiert, da die erste Zeile die Eingabe und die zweite Zeile die Ausgabe ist.
-1
true
1
true
1234
true
-4321
true
defined
true
deFined
true
Found
true
nonnil
true
non-nil
true
ON
true
SuCCess
true
T
true
true
true
y
true
YeS
true
0
false
'' (empty string)
false
faLSE
false
f
false
Failure
false
n
false
NaN
false
nil
false
no
false
notfound
false
not-Found
false
NULL
false
nullptr
false
OFF
false
unDefined
false
Wertung
Das ist Code-Golf; Der kürzeste Code in Bytes gewinnt. Es gelten Standardlücken. Sie können alle gewünschten integrierten Funktionen verwenden.
quelle
0
?00
wahr oder sind sie sogar gültige Eingaben? (Ich nehme an, sie sind nicht gültig, sondern überprüfen nur)Antworten:
MATL , 20 Bytes
Die Eingabe ist eine Zeichenfolge in einfachen Anführungszeichen. Die Ausgabe ist
1
für wahr oder0
falsch.Probieren Sie es online aus! Oder überprüfen Sie alle Testfälle .
Wie es funktioniert
Dies führt zwei Tests an der Eingabe durch:
0
. Es reicht also aus, die Konvertierung zu versuchen, den absoluten Wert und die Summe zu nehmen. Dies ergibt einen positiven Wert, wenn die Eingabe eine Zahl ungleich Null enthält,0
andernfalls.'01...9ab...z'
. Die Basiskonvertierungsfunktion unterscheidet nicht zwischen Groß- und Kleinschreibung und ignoriert Ziffern, die im Alphabet nicht vorhanden sind (in unserem Fall'-'
). Es stellt sich heraus , dass die Modulo 13 der sich ergebende Zahl ist1
,3
,6
oder8
für die truthy Saiten, und jeder dieser Werte nicht für die falsy Saiten geben. So kann es als Signatur verwendet werden. Wir führen also Modulo 13 durch und prüfen, ob das Ergebnis einer dieser vier Werte ist. Dies gibt,1
ob es ist oder0
nicht.Das Endergebnis sollte wahr sein, wenn eine der beiden Bedingungen erfüllt ist, und ansonsten falsch. Also haben wir die beiden Zahlen aus 1 und 2 und Konvertit logische hinzufügen, die gibt
1
oder0
als standardisierte truthy / falsy Werte.quelle
Netzhaut ,
222423 BytesDank edc65 1 Byte gespeichert
Der gesamte Code ist nur ein regulärer Ausdruck. Das
i`
am Anfang macht den Regex-Fall unempfindlich.Outputs
1
für Wahrheit,0
für Falsey.Probieren Sie es online aus!
quelle
n?on
ist toll, ich werde es benutzen. Ich denke, Sie brauchen nicht das erste `\`n?on
.Stapel, 142 Bytes
Gibt 1 für falsch aus, nichts für wahr.
quelle
JavaScript (ES6), 35
39Bearbeiten Sie mit dem
n?on
Trick, der aus der Antwort von BusinessCat gestohlen wurdeBearbeiten 2 OP geklärt, keine führenden Nullen, 4 Bytes gespeichert
Einfach zurück
true
oderfalse
Prüfung
quelle
\d
regulären Ausdrucks und das Wechseln zum regulären Ausdruck|v!=0
?\d
gegen1-9
? Vorausgesetzt, dass Feersums Frage zutreffend ist,^([-1-9dsty]|on|fo|non)
sollte dies ausreichen.Python, 111 Bytes
Tests zur Summe der ASCII-Werte, zusätzliche Prüfung für
no
daon
hat den gleichen Wert.quelle
ord('0')
tutlambda s:s.lower()!='no'and sum(map(ord,s.lower()))in[0,48,323,744,523,877,110,785,443,922,315,317,946]>1
Ich habe es aber nicht getestet.Python,
1297978 BytesMuss schnell einreichen!
Wahr ist falsch und falsch ist wahr; Ich habe einen schönen Reim dafür, das tue ich wirklich (nicht)
quelle
' 0 f failure false n nan nil no notfound not-found null nullptr off undefined'.split(' ')
.split()
stattdessen tatsächlich verwenden , da das Standardtrennzeichen fürsplit
Leerzeichen ist.Python,
8375 BytesGibt bei Erfolg 0 zurück, AttributeError bei Fehler.
Verwenden Sie jetzt den regulären Ausdruck von edc85, um 8 Bytes zu sparen.
quelle
PowerShell v2 +,
3937 ByteVorausgesetzt, die Antwort auf die Frage von @ feersum lautet "Nein, wahrheitsgemäße Ganzzahlen dürfen nicht mit a beginnen
0
."Port der regulären JavaScript-Antwort von @ edc65 mit meiner eigenen
1-9
Ersetzung anstelle von\d
. Verwendet denn?on
Trick von @ BusinessCat, um weiter Golf zu spielen.Ausgänge literal Booleschen
$true
oder$false
Werte, die , wenn sie auf der Rohrleitung verlassen und durch einen impliziten geschicktWrite-Output
am Ende der Ausführungsergebnisse inTrue
oderFalse
an der Konsole gedruckt wird.Wenn die Antwort "Ja, wahrheitsgemäße Ganzzahlen können mit beginnen
0
" lautet, müssen die folgenden Änderungen für5149 Bytes vorgenommen werdenWenn Sie Regex nicht mögen, wählen Sie PowerShell v3 + und das Folgende mit 107 Byte
Dies verwendet die Zeichenfolge von Falsey-Werten,
-split
s sie in Leerzeichen, und verwendet den-notin
Operator, um die Eingabe$n
mit diesem Array von Zeichenfolgen zu vergleichen (bei dem standardmäßig die Groß- und Kleinschreibung nicht berücksichtigt wird). Erfordert die$n-and
Prüfung mit der leeren Zeichenfolge.quelle
'^[-1-9dsty]|fo|n?on'
:)notfound
undnot-found
wegen derfo
.^[-1-9dsty]|^fo|^n?on
aber das ist die gleiche Anzahl von Zeichen und weniger klar.PHP, 50 Bytes
Drucke
1
für wahr, nichts für falschhat versucht, eine andere Lösung zu finden, aber der kürzeste reguläre Ausdruck für Falschheit ist 3 Byte länger als der für Wahrheit:
%^(0|fa|f?$|n(?!on)|of|u)%i
quelle
Python, 83 Bytes
https://repl.it/ClgO/1
quelle
in
nicht nicht leer?x[:1]
für eine leere Zeichenfolge? Gibtin
return in diesem Fall false zurück? Wenn ja, sollten Sie in der Lage sein, dieand''<x
''[:1] in 'abc'
bewertet als wahr.