Wie wäre es mit einer Herausforderung, bei der die Ausgabe zweisprachig sein kann, nach all dem Spaß, den wir in der ( jüngsten ) Vergangenheit mit mehrsprachigen Herausforderungen hatten ?
Ihre Antwort muss eine boolesche Eingabe akzeptieren b
und den Text "true"
oder ausgeben "false"
. Derselbe Code muss ausgegeben werden, wenn er in einer anderen Sprache ausgeführt wird."waar"
oder , "onwaar"
oder jede andere Übersetzung von true
und false
.
Eingang
- Input ist eine klar unterscheidbare Wahrheit / Falschheit. Zulässig sind die Istwerte T / F, ein Bit, int oder eine (leere) Zeichenkette.
- Die Eingabe muss für alle Teile Ihrer Einreichung gleich sein.
Ausgabe
Die Ausgabe kann von einer Funktion zurückgegeben werden, in die geschrieben wurde
STDOUT
in ein Popup-Fenster , dort platziert, in 3D gedruckt und per Post verschickt werden.Die Ausgabe muss den Status von darstellen
b
. Eine "Wahrheit" muss also "wahr", "waar" ... ausgeben, und "falsey" sollte zu "falsch", "onwaar" usw. führen.Unterschiedliche Sprachen können unterschiedliche Ausgabemethoden verwenden.
Verwendete Sprachen
Einer Ihrer Ausgänge MUSS
"true"
und sein"false"
.Unterschiedliche Versionen von Programmiersprachen zählen für diese Herausforderung als unterschiedliche Sprachen.
Unterschiedliche Dialekte einer menschlichen Sprache zählen für diese Herausforderung als unterschiedliche Sprachen.
Sie können die Mehrsprachigkeit auf mehr als zwei Programmiersprachen erweitern. Jede Programmiersprache muss eine eigene menschliche Sprache ausgeben.
Die Antwort mit den meisten Sprachen wird zum Gewinner erklärt. Bei Gleichstand wird bytecount berücksichtigt.
quelle
"True"
und"False"
akzeptabel anstelle der erforderlichen"true"
und"false"
?Antworten:
Dyalog APL ,
243237 Bytes : 14 Sprachen, erweiterbar auf 131 *-6 Bytes dank Soaku .
Benötigt,
⎕IO←0
was auf vielen Systemen Standard ist. Fordert zur Eingabe von0
oder auf1
.Je nach Version (9.0 bis 16.0, mit Nebenversionen) erfolgt die Ausgabe in Englisch, Spanisch, Portugiesisch, Deutsch, Vietnamesisch, Französisch, Türkisch, Italienisch, Polnisch, Sundanesisch, Philippinisch, Yoruba, Usbekisch oder Rumänisch, jedoch ohne diakritische Zeichen.
⎕AV⍳'ëáàÆÅÄòðÓÈÇ'
in den Indizes des A tomic V ector (151 142 141 133 132 131 122 121 111 102 101 96)((
...)⍳
...)
finde die Position von⍎
die ausgewertet⎕D∩⍨
Schnittpunkt von D igits und4↑
die vier * ersten Zeichen von1⊃
das zweite Element von#⎕WG'APLVersion'
die Versionsnummer(
...)⊃
dann wähle damit aus⎕⊃
das Eingabe'te (0: erstes; 1: zweites) Element vons¨
Die Funktion s (die wir in Kürze definieren werden) wird auf jede der Funktionen angewendet⌽
das Gegenteil von(s←{
...})
s angewendet auf - wobei s definiert ist als1↓¨
das erste Zeichen aus jedem von⍵⊂⍨
das Argument, wo aufgeteilt⍵=
Die Zeichen des Arguments sind gleich⊃⍵
das erste Zeichen des Arguments';,true,adevarat,
...,falsch',
diese Zeichenfolge vorangestellt18⍴',falso'
Achtzehn Zeichen, die zyklisch aus dieser Zeichenfolge entnommen wurden* Seit Version 12.1 enthält die Versionsnummer die Build-Nummer. Durch Erhöhen der Anzahl der Zeichen aus dieser Zeichenfolge können alle 131 lateinischen Skriptsprachen problemlos abgedeckt werden .
quelle
prawdziwy
nachprawda
undfalszywy
nach ersetzenfalsz
. Die kürzeren Formen passen hier besser und geben Ihnen eine bessere Punktzahl.6 Sprachen, 169 Bytes
Erwartet
0\n
oder1\n
als Eingabe und druckt Wörter in:vals/waar
),faux/vrai
),false/true
),usant/sant
),usand/sand
),falso/vero
).quelle
print
Aussage geben!Alle Pilze, 6 Sprachen, 146 Bytes
💥 Jetzt in 3D! 💥
Der Klarheit halber habe ich die beiden Codeebenen getrennt, damit Sie sehen können, wie sie überlagert sind. Auf der Festplatte werden diese beiden Blöcke am Ende der obigen Zeile durch ein Formularvorschubzeichen getrennt.
Die Regeln besagten, dass verschiedene Versionen einer Sprache als separate Sprachen gelten, sodass es sich bei dieser um sechs Versionen von Funge / Befunge handelt. :)
Dank Dennis können nun alle Befunge-Versionen online bei TIO getestet werden . Derzeit gibt es jedoch keine funktionierenden Implementierungen der Unefunge- und Trefunge-Varianten. Für diese würde ich Rc / Funge empfehlen .
A
wird in Befunge 93 und 96 ignoriert, ist jedoch der Befehl Über Gesicht in 97 und wird in 98 nicht unterstützt und wird daher wiedergegeben. Dies bedeutet, dass 93 und 96 dem folgenv
unten verlaufen, während 97 und 98 auf die gegenüberliegende Seite des Spielfelds gewickelt werden.In Befunge 96 markiert ein
;
gefolgt von einem Leerzeichen am Anfang der Zeile diese als Kommentar, sodass diese Zeile übersprungen wird und der Interpreter in>
die dritte Zeile übergeht . Im Jahre 93 folgt der Dolmetscher dem>
der zweiten Zeile.Der 97/98-Pfad wird in der ersten Zeile von rechts nach links fortgesetzt. Dabei wird der Abschnitt innerhalb der
;
Kommentarmarkierungen übersprungen , der&
Befehl überbrückt und schließlich die U-Bend-Sequenz erreichtv<^<
. In Unefunge werden diese Richtungsänderungen nicht unterstützt, sodass der Interpreter die Richtung umkehrt und den zuvor übersprungenen Abschnitt in den Kommentaren ausführt. In Befunge / Trefunge geht es links weiter.In Befunge 97 wird der
m
Befehl nicht unterstützt und daher übersprungen, sodass der Interpreter in der ersten Zeile fortgesetzt wird. In 98 ist es nur 3D, so dass es in Befunge (2D) reflektiert wird und der Interpreterv
rechts davon bis zur vierten Zeile folgt. In Trefunge (3D) ist es ein High-Low Zweig, der eine Ebene entlang der Z-Achse in die zweite Ebene überträgt.Anders als im Unefunge-Fall haben wir also jede Version, die ihr Zeichenfolgenpaar aus einer separaten Zeile sammelt, bevor sie zu einem der
&
Befehle geleitet wird, um die Benutzereingabe zu erhalten. Diese Codepfade verschmelzen dann alle über die^
Befehle in der zweiten Spalte und leiten den Programmfluss nach oben durch die Oberseite des Spielfelds, wobei sie sich wieder nach unten drehen.Schließlich haben wir die
^_^
Reihenfolge, in der anhand der Benutzereingaben entschieden wird, welchem Pfad zu folgen ist. Wenn 0 , gehen wir direkt zu der Ausgabesequenz (>:#,_
), in der der falsche String geschrieben wird. Bei 1 wird zuerst ausgeführt,>_
wodurch die erste Zeichenfolge aus dem Stapel gelöscht und somit die wahre Zeichenfolge ausgegeben wird .quelle
5 Sprachen, 249 Bytes
Hinweis: Die Zeichen
\r
und\e
sind wörtliche Zeilenvorschub- und Escapezeichen, müssen jedoch\x5b
unverändert sein, da sich Ruby ansonsten über die Zeichenklasse im regulären Ausdruck beschwert.Ein bisschen zu spät zur Party, und keineswegs ein Gewinner, aber ich fing an, an einer Polyglotte für die Erntedank-Herausforderung zu arbeiten und dachte, es könnte ein bisschen zu spät sein, also verwandelte es sich in diese!
Erläuterung
Python:
True
/False
Hier setzen wir auf
q
,0//1
was ist0
, dann haben wir eine'''
Zeichenkette, die den größten Teil des anderen Codes enthält, speichern ein Array, dasFalse
undTrue
und anzeigt0
und1
weisen die Eingabe zub
(was sein sollte0
oder1
zu bedeutenFalsy
undTruthy
), dannprint
denb
th-Index vona
, zeigtFalse
oderTrue
.Ruby:
Vrai
/Faux
Wie beim Python-Skript setzen wir die Variable
q
, aber in Ruby wird dies auf gesetzt0 / /1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord
, da Ruby dies0/
als "Null geteilt durch" und das folgende/
als "Beginn des Regex-Literal" aufteilt . Mit diesem Literal kann ich den PHP-Code verbergen und Pythons starten'''
. Wir müssen hinzufügen,.to_s.ord
weil der richtige Operand a sein/
mussFixnum
. Danach definieren wir eine Funktioninput()
und die VariableTrue
undFalse
enthalten ihre französischen Gegenstücke und starten schließlich eine Zeichenkette,'
die in die nächste Zeile übergeht. Schließlich erstellen wir ein Array,a
das"Vrai"
und enthält,"Faux"
und wählen sie mit derinput()
ed-Nummer0
oder aus1
.Perl:
Waar
/Vals
In Perl, die
q=..=
,q+...+
undq-...-
werden Blöcke Literale mit ungewöhnlichen delimiters zitiert, in dem obigen Code ich diese ersetzt haben'...'
. Der größte Teil des Codes ist in einer Literalzeichenfolge enthalten, aber wir definierensub a
(die ein<><
! Enthält ), das prüft, obSTDIN
kleiner als1
ist und entwederWaar
oder zurückgibtVals
. Dieprint(a[b])
tatsächlichprint
s das Ergebnis der Aufrufsub
a
mit und Argument von[b]
denen ist ein ArrayRef, die den Bare-Wort enthältb
.JavaScript:
Vero
/Falso
Die erste Zeile wird meistens von der Division auskommentiert
0//1
(//
ist ein Zeilenkommentar in JavaScript), also setzen wir einfachq
auf0
. In der nächsten Zeile werden die JS-Funktionen ihren Python-Namen und Einstellungsvariablen zugeordnetTrue
und damitFalse
, dass sie die italienischen Zeichenfolgen sind. Schließlich führen wir dasselbe aus wie den Ruby-Code, setzen a auf ein Array der italienischen Wörter und wählen mit eineminput
von0
oder aus1
.PHP:
Ekte
/Falsk
Da PHP nur Code ausführt
<?...?>
, der so ausgegeben wird, wie er ist, gibt unser Code hier einfach einen Zeilenvorschub aus (um zum Anfang der aktuellen Zeile zurückzukehren) und die ANSI-Escape-Sequenz, um das Ende der aktuellen Zeile zu löschen Zeile, gefolgt von entwederEkte
oderFalsk
abhängig davon, ob das eingegebene Zeichen (0
oder1
) wahr oder falsch ist.quelle
Python, Python - 28 Bytes
quelle
.q
und;
am Ende hinzufügen .C #, Java, 104 Bytes
Golf gespielt:
Ungolfed:
Prüfung:
C #
Java
Erläuterung:
Beim Aufruf
ToString()
odertoString()
auf einem Boolean in C # und Java bzw. druckt C # die Zeichenfolge mit einem Kapital ersten Buchstaben,True
undFalse
, aber Java druckt alles in Kleinbuchstabentrue
undfalse
.quelle
2 Sprachen, 60 Bytes
Sprachen sind:
true
false
waar
onwaar
Hinweis: Es gibt UTF-8-Bytes, keine Jelly-Bytes.
quelle
Lua / JavaScript, 68 Bytes
Ich weiß nicht, warum ich Golf gespielt habe. Ich fühlte mich einfach so.
quelle
JavaScript / BF
In beiden Sprachen wird keine Eingabe als falsch und jede Eingabe als wahr betrachtet.
Wenn Sie die Struktur des Programms um 90 Grad nach links gedreht sehen, sehen die BF-Symbole aus wie Türme in einer Stadt :)
Probieren Sie es online aus (BF true testcase)!
Probieren Sie es online aus (BF falscher Testfall)!
Erläuterung
JavaScript
Wenn der
prompt
true ist (dh nicht leer, weilprompt
ein String zurückgegeben wird), wird ausgegebentrue
oder sonst ausgegebenfalse
.BF
Ausgaben
sand
(dänisch für wahr), wenn eine Eingabe vorhanden ist, oder Ausgabenusand
(falsch), wenn die Eingabe leer ist.TL; DR Wenn die Eingabe nicht leer (dh wahr) ist, geben Sie nichts aus. Wenn die Eingabe leer ist (dh falsch), wird sie ausgegeben
u
. Dann wird unabhängig davon, ob die Eingabe wahr oder falsch ist, ausgegebensand
.Ich habe mich von https://esolangs.org/wiki/Brainfuck_algorithms inspirieren lassen mit denen ich die Logik meines Programms erstellt habe.
Eingaben übernehmen. Wenn die Eingabe nicht leer ist, erhöhen Sie den Speicher, nennen wir diese Zelle "Zelle A". If-Anweisung beenden
Vergleicht den Wert von "Zelle A" mit
0
. Wenn sie gleich sind, lass "Zelle B" sein1
, oder lass es sein0
.Wenn "Zelle B" 1 ist, wird ausgegeben
u
. Schließen Sie die if-AnweisungAusgabe
sand
quelle
u
bedingt sein, nichts
wahr?u
bedingts
bedingt ist. Könnten Sie das aus Gründen der Klarheit beheben? Trotzdem nette Antwort.If input is empty (ie false), output `s`.
Ich denke, das ist der Teil, der Alex L. verwirrt hat.