Aufgabe:
Ihre Herausforderung besteht darin, die Sprache, in der sie geschrieben sind, in folgendem Format auszugeben, wenn Sie frühere Beiträge eingereicht haben und sich selbst als Eingabe verwenden:
Angenommen, das erste Programm ist in Ruby. Es muss ausgegeben werden 1
, da Ruby die 1
wichtigste Sprache für diese Herausforderung ist. Ein Beispielprogramm ist:
a=gets
puts 1
Wenn es selbst als Eingabe angegeben wird, wird es zurückgegeben 1
.
Das nächste Programm könnte in Python sein. Es muss ausgegeben werden 2
, da Python die 2
in der Challenge verwendete nd-Sprache ist. Ein Beispielprogramm ist:
print(1 if input()[0]=="a"else 2)
Bei der ersten Vorlage gibt es aus 1
und bei sich selbst gibt es aus 2
.
Sie dürfen Sprachen wiederholen, jedoch keine Antwort in der Sprache der vorherigen Antwort senden.
Wenn sich das dritte Programm beispielsweise in Ruby befindet, muss 1
es das erste Programm und sich selbst ausgeben (da Ruby die verwendete 1
Sprache ist) und das zweite Programm, das es ausgeben muss 2
.
Regeln:
- Wenn
n
die Herausforderung derzeit Antworten enthält, müssen mindestensfloor(n / 3)
verschiedene Sprachen vorhanden sein. Jeder Beitrag, der gegen diese Regel verstößt, wird disqualifiziert. - Keine zwei "Nachbarantworten" (z. B. Antwort
n
und Antwortn+1
) können nicht dieselbe Sprache verwenden. - Unterschiedliche Sprachversionen zählen nicht als unterschiedliche Sprachen
Python 2 == Python 3
. - Bei Antworten müssen alle vorherigen Beiträge berücksichtigt werden.
- Der erste Beitrag muss eingegeben werden.
- Sie dürfen nicht mehrere Antworten hintereinander einreichen.
- "Antworten wiederholen" (Antworten, die genau den gleichen Code wie eine vorherige Einreichung haben) sind nicht zulässig.
- Bei Antworten darf die zugewiesene Byteanzahl dieser Antwort nicht überschritten werden. Weitere Informationen finden Sie unter "Zugewiesene Byteanzahl".
Zugewiesene Bytezahl:
Für jede Antwortnummer n
ist die zugewiesene Byteanzahl für diese Antwort 45 + 5n
.
Antwortformatierung:
Formatieren Sie Ihre Antwort wie folgt:
# {answer no.}, {language}
{program}
This prints:
- `1` in answer(s) {all answers using 1st language, with links}
- `2` in answer(s) {all answers using 2nd language, with links}
...
{optional explanation}
Führen Sie für die Antwortlisten Folgendes aus:
- `1` in answers [1]({link to answer}), [3]({link to answer})...
Wertung:
Die erste Antwort, die nach 7 Tagen ohne gültige Einsendungen überlebt, wird als Gewinner erklärt.
quelle
floor(n / 3)
Sprachen). Ich vermute, das ist kein beabsichtigtes Verhalten.Antworten:
26. > <> (Sprache 12), 164 Bytes
Mein erstes Programm in> <>! Es sind 156 Zeichen, aber 164 Bytes in UTF-8.
Dies druckt:
1
mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit den Antworten 4 , 12 und 15 (Javascript).5
mit den Antworten 6 und 8 (R).6
mit den Antworten 10 , 17 , 20 , 22 und 25 (Bash).7
mit den Antworten 11 und 19 (Mathematica).8
mit Antwort 13 (Python).9
mit Antwort 16 (Perl).10
mit den Antworten 18 , 21 und 23 (C / C ++).11
mit Antwort 24 (Zsh).12
mit dieser Antwort (> <>).Probieren Sie es online!
Erläuterung:
Die erste Zeile ist einfach die Antwort # 5. Es tut nichts anderes, als den Befehlszeiger an die unterste Zeile zu senden.
/
Dreht den Fisch nach rechts und die Charaktere^mwfPes{'tc
werden auf den Stapel gelegt. Ein einzelnes Eingabezeichen wird gelesen (i
). (Nennen wir dieses ZeichenC
zur Erläuterung.) 2 wird in das Register (2&
) eingetragen . Dann springen wir zum Anfang der zweiten Zeile (Zeile 1) (01.
).Diese Zeile vergleicht
C
mit jedem Zeichen auf dem Stapel. Eine Kopie vonC
wird auf der Unterseite des Stapels aufbewahrt.{
dreht den Stapel so, dass erC
oben liegt;:
dupliziert es;}
Dreht die Kopie wieder nach unten. Wir erhöhen das Register (&1+&
), bis eine Übereinstimmung gefunden wird. (WennC
also "c" ist, enthält das Register 3, wenn die Übereinstimmung gefunden wurde. WennC
"t" ist, enthält das Register 4 usw.) Dann springen wir zum ersten Zeichen der Zeilennummer im Register (0&.
). .Die Zeilen 3 bis 13 behandeln, was zu tun
C
ist, wenn c, t, ', {usw. ist. Der Befehlszeiger bewegt sich rückwärts, wenn wir springen. es landet auf dem ersten Zeichen der angegebenen Zeile, aber nach einem Sprung rückt es einen Tick vor, bevor es ausgeführt wird, sodass es vom Ende der Zeile an rückwärts ausgeführt wird. Jede Zeile drückt die entsprechende Sprachnummer auf den Stapel und sendet den Fisch an dien
Anweisung, die ihn ausgibt.^
ist der komplizierteste Fall, weil ich mit der ersten Zeile dieser Antwort so unfreundlich bin. Zeile 13 liest die Eingabe bis EOF. Dann wird die Zeile 15 aufgerufen, in der die Länge des Stapels (l
) mit 100 (aa*
) verglichen wird . Wenn es länger ist ()?
), fügen wir hinzu+
b
und1
erhalten 12, diese Sprache; Andernfalls bleibt 1 auf dem Stapel.quelle
1. Netzhaut , 0 Bytes
Probieren Sie es online!
Das leere Programm wird gedruckt,
1
wenn eine leere Eingabe (dh selbst) gegeben wird, da es zählt, wie oft die leere Regex mit der Eingabe übereinstimmt (was immer der Fall ist1+length(input)
).quelle
2. Brain-Flak , 22 Bytes
Probieren Sie es online!
Dies prüft die Oberseite des Stapels und setzt eine Eins auf den gegenüberliegenden Stapel, wenn sie nicht Null ist. Anschließend wird der gegenüberliegende Stapel erhöht und zurückgegeben. Dadurch wird 1 für das leere Programm und 2 für alles andere zurückgegeben.
Da Stapel in Brain-Flak standardmäßig Null sind, hat ein leeres Programm eine Null oben auf dem Stapel, während jedes andere Programm (mit Ausnahme von Programmen, die mit Nullzeichen enden) einen Wahrheitswert hat. Dies bedeutet, dass wir ein sehr einfaches if-Programm auf dem Eingabestapel ausführen können.
quelle
3. APL, 7 Bytes
Erläuterung:
quelle
10. Bash (+ Coreutils) [Sprache 6],
4474 BytesFixed Version (gibt die Sprach-ID zurück)
Hinweis: Hiermit wird die nachstehende Zeile nach dem eingegebenen Programmtext erwartet
quelle
9. Retina (Sprache 1), 20 Bytes
Probieren Sie es online!
Wie bei Plannapus entschied ich mich für ein Umschreiben, um die Dinge ein wenig zu verändern, was auch den Code erheblich verkürzte (eine Modifikation meiner letzten Antwort, um den neuesten Stand von Plannapus zu berücksichtigen, hätte ungefähr 32 Bytes ergeben, denke ich).
Erläuterung
Wie meine anderen Antworten zählt dies nur die Anzahl der verschiedenen Regex-Übereinstimmungen, geht aber viel effizienter vor sich:
$
stimmt mit dem Ende der Zeichenfolge überein. Dies funktioniert immer, auch wenn eine Übereinstimmung bis zum Ende der Zeichenfolge vorhanden ist. Auf diese Weise erhalten wir eine Basis1
für alle Eingaben.}\{
findet eine einzelne Übereinstimmung im zweiten Programm (Brain-Flak) und erhöht die Anzahl dort auf2
. Der Backslash ist für das Escape nicht erforderlich, verhindert jedoch, dass dieser Teil des regulären Ausdrucks mit sich selbst übereinstimmt.[:'][^]']
ist eigentlich ziemlich schick. Der einzige Zweck besteht darin, die zwei'
im APL-Programm (Sprache 3) und die drei:
im JavaScript-Programm (Sprache 4) zu zählen, aber wir müssen verhindern, dass dieser Teil selbst übereinstimmt. So stellen wir sicher, dass das nächste Zeichen weder ist'
, noch]
(weil diese nach denen nicht erscheinen wir tun übereinstimmen sollen, aber sie erscheinen hier in diesem Programm).'
aus dem vorherigen Teil führt bereits zu einer Übereinstimmung in den R-Programmen, also brauchen wir drei weitere. Die Teilzeichenfolge wird,1
in beiden drei Mal und in keinem anderen Programm angezeigt. Wir gleichen es ab, indem wir eine tautologische Wortgrenze dazwischen mit einfügen,\b1
, um zu verhindern, dass es sich selbst wieder angleicht.quelle
1
es einfach ihre Standardausgabe ist. Ich werde mit der nächsten Antwort etwas dagegen unternehmen müssen.18. C (Sprache 10), 121 Bytes
Dies ist der C89- oder C90-Standard. Es funktioniert entweder mit clang oder gcc bei Try It Online.
Dies druckt:
1
mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit den Antworten 4 , 12 und 15 (Javascript).5
mit den Antworten 6 und 8 (R).6
mit den Antworten 10 und 17 (Bash).7
mit Antwort 11 (Mathematica).8
mit Antwort 13 (Python).9
mit Antwort 16 (Perl).10
mit dieser Antwort (C).Hier ist ein Bash-Treiber, der alle 18 Antworten auf " Online testen" enthält.
Ungolfed-Äquivalent (646 Bytes):
quelle
5. Retina (Sprache 1), 23 Bytes
Probieren Sie es online!(Prüft alle möglichen Eingaben.)
Zählt die Übereinstimmungen verschiedener Elemente in der Eingabe:
^$
Entspricht der Eingabezeichenfolge, dh die erste Antwort einmal.{}
Passt zu sich selbst, von denen es zwei im zweiten Programm gibt und eine in diesem.(?![⊂⍴])[⊂-⍴]
Entspricht den Zeichen mit den Codepunkten 8834 bis 9076 ( exklusiv) , wobei im dritten Programm drei Übereinstimmungen gefunden werden. Wir verwenden den negativen Lookahead, um zu vermeiden, dass die Bereichsenden in diesem Programm abgeglichen werden.\B=
Entspricht einem=
, dem kein Wort vorangestellt ist. Dies stimmt mit vier der=
im vierten Programm überein und stimmt nicht mit den=
in diesem Programm überein .quelle
7. Retina (Sprache 1), 27 Bytes
Probieren Sie es online! (Prüft alle möglichen Eingaben.)
Eine geringfügige Änderung der fünften Antwort .
\B=
findet bereits 4 Übereinstimmungen in der sechsten Antwort und\b5
findet eine andere, ohne andere Antworten zu finden.quelle
4, JavaScript (ES6), 32 Byte
Gibt 1 für einen leeren Eingang aus, 2, wenn der Eingang mit a beginnt
{
, 4, wenn er mit a beginnts
und 3, andernfalls.quelle
s[0]=='{'
bys[0]>'z'
11. Mathematica [Sprache 7], 53 Bytes
Unbenannte Funktion, die eine Liste von Zeichen als Argument verwendet und eine positive Ganzzahl ausgibt. Verzweigt einfach auf den ersten Buchstaben der Eingabe und verwendet dessen Position in der Zeichenfolge
"^{'sceP"
, um über die Ausgabe zu entscheiden. Dies gibt die richtige Antwort für alle vorherigen Einreichungen mit Ausnahme des anfänglichen leeren Retina-Programms und der letzten Retina-Antwort . Diese beiden/._@__->1
Spit- Fehler, aber die Ausgabe wird durch die Regel repariert, die jede nicht bewertete Funktion in transformiert1
.quelle
16. Perl (Sprache 9), 94 Bytes
Probieren Sie es online!(überprüft alle Antworten). Ausgänge "1234151516748149"
Dies druckt:
Das Programm überprüft die Eingabelänge und ordnet sie der aktuellen Sprachverteilung zu.
quelle
6. R (Sprache 5), 61 Bytes
Überprüft das erste Zeichen der Eingabe und wählt die Ausgabe entsprechend aus.
Dies gibt also aus:
1
mit den Antworten 1 und 5 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit Antwort 4 (Javascript).und
5
mit dieser Antwort.Verwendung:
quelle
8. R (Sprache 5), 76 Bytes
Überprüft die ersten Buchstaben des Eingangs, und vergleicht sie mit einem Vektor (in dieser Reihenfolge) die leere Zeichenfolge enthält,
{
,'
,s
undc
. Es gibt dann den Index der Übereinstimmung aus (R-Indexierung ist 1-basiert) oder 1, wenn keine Übereinstimmung vorliegt.Gleiches Konzept wie Antwort Nr. 6 , verhindert jedoch Antwort Nr. 7 mit ihr übereinstimmt.
Dies druckt:
1
mit den Antworten 1 , 5 und 7 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit Antwort 4 (Javascript).und
5
mit Antwort 6 und dieser Antwort (R).Wenn ich mich nicht irre, betrug die zulässige Byteanzahl für diese Antwort 94 Bytes.
quelle
readline
sollte durch ersetzt werdenreadLines(file("stdin"))
. Das bedeutet 16 weitere Zeichen: Antwort 6 sollte daher 77 Bytes (von 79 zulässigen) und diese Antwort 92 Bytes (von 94 zulässigen) sein. Mit dieser Änderung funktioniert es auch bei Online-Dolmetschern.12. Javascript (Sprache 4), 117 Bytes
Hinweis: Ich habe ein Zeichen geändert, um einen Fehler in diesem Zeichen zu korrigieren.
Prüft den ersten Buchstaben der Eingabe, wenn es c ist, prüft es die Länge der Eingabe.
Ausgänge:
quelle
13. Python (Sprache 8), 110 Bytes
Hinweis: Diese Antwort wurde 6 Stunden nach der Veröffentlichung auf Empfehlung des OP geändert.
Dies ist die gleiche Idee wie Antwort 10 (in Bash), jedoch in Python 3. (Dieser Ansatz kann für höchstens 3 weitere Einträge verwendet werden, bevor die hexadezimalen Ziffern ausgehen.)
Dies druckt:
1
mit den Antworten 1 , 5 , 7 und 9 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit den Antworten 4 und 12 (Javascript).5
mit den Antworten 6 und 8 (R).6
mit Antwort 10 (Bash).7
mit Antwort 11 (Mathematica).8
für diese Antwort (Python).Probieren Sie es online! für: Antwort 1 , Antwort 2 , Antwort 3 , Antwort 4 , Antwort 5 , Antwort 6 , Antwort 7 , Antwort 8 , Antwort 9 , Antwort 10 , Antwort 11 , Antwort 12 oder diese Antwort .
quelle
24. Zsh (Sprache 11), 142 Bytes
Meine vorherige Antwort # 18 in C funktioniert für alle nachfolgenden Einträge ( Demo ) immer noch unverändert . Also lasst es uns ein wenig verwechseln.
Der Kommentar am Ende soll der Länge der Antworten 21 und 23 entsprechen und sicherstellen, dass bisher kein einzelnes Zeichen des sha256- oder sha384-Hashes für jede Antwort eindeutig ist, wobei die Zeichen verwendet werden, die von den C ++ - Antworten von Lyth überprüft wurden. ;-)
Dies druckt:
1
mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).2
mit antwort 2 (Brain-Flak).3
mit antwort 3 (APL).4
mit den Antworten 4 , 12 und 15 (Javascript).5
mit den Antworten 6 und 8 (R).6
mit den Antworten 10 , 17 , 20 und 22 (Bash).7
mit den Antworten 11 und 19 (Mathematica).8
mit antwort 13 (Python).9
mit antwort 16 (Perl).10
mit den Antworten 18 , 21 und 23 (C / C ++).11
mit dieser Antwort (Zsh).Probieren Sie es online!
quelle
14. Retina (Sprache 1), 39 Bytes
Probieren Sie es online! (Prüft alle gültigen Eingaben.)
quelle
15. Javascript (Sprache 4), 108 Bytes
Golf gespielt
quelle
17. Bash (+ coreutils + openssl) (Sprache 6), 103 Bytes
Golf gespielt
Verwendet die gleiche Technik wie meine Antwort # 10 , jedoch mit Base64- codiertem Wörterbuch anstelle von Hex .
Ich habe die folgende Datendatei zum Testen zusammengestellt:
Prüfung
quelle
19. Mathematica (Sprache 7), 96 Bytes
Unbenannte Funktion, die eine Liste von Zeichen als Eingabe verwendet und eine Ganzzahl zurückgibt:
1
mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit den Antworten 4 , 12 und 15 (Javascript).5
mit den Antworten 6 und 8 (R).6
mit den Antworten 10 und 17 (Bash).7
mit Antwort 11 und dieser Antwort (Mathematica).8
mit Antwort 13 (Python).9
mit Antwort 16 (Perl).10
mit Antwort 18 (C).Bisher sind alle Längen der Antworten unterschiedlich und sie sind sogar unterschiedlich modulo 59 - daher kann festgestellt werden, mit welcher ganzen Zahl im Bereich 33, 34, ..., 91 sie kongruent sind (mod 59). Dies sind alles druckbare ASCII-Zeichen, die von der Zeichenfolge codiert werden
";NRU$ Q B [1: =L J, 5% 3 # >"
. usingToCharacterCode@StringSplit@
wandelt diesen String in eine Liste mit zehn Listen mit ganzen Zahlen in diesem Bereich um und ermitteltPosition[...,Mod[Length@#,59,33]][[1,1]]
, welche der zehn Unterlisten mit der geänderten Länge der Eingabe übereinstimmt.quelle
20. Bash (+ coreutils + openssl) (Sprache 6), 121 Byte
Golf gespielt
Die gleiche Methode wie meine Antwort # 17 (die wiederum auf meiner ursprünglichen Antwort Nr. 10 basiert ).
Da wir jetzt 10 verschiedene Sprachen haben, habe ich auf hexadezimale Positionscodierung umgestellt.
Daten
Test (Ausgabe)
quelle
23. C (gcc) (Sprache 10), 142 Bytes
Probieren Sie es online!
1
mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit den Antworten 4 , 12 und 15 (Javascript).5
mit den Antworten 6 und 8 (R).6
mit den Antworten 10 , 17 , 20 und 22 (Bash).7
mit Antwort 11 und 19 (Mathematica).8
mit Antwort 13 (Python).9
mit Antwort 16 (Perl).10
mit Antwort 18 , 21 und dieser Antwort (C).Dieses Programm zählt die Anzahl der verschiedenen Zeichen (in ASCII werden Mehrbyte-UTF-8-Zeichen in mehrere Einträge aufgeteilt) und folgt dann einem sorgfältig gestalteten Entscheidungsbaum, der auf der Anzahl der Vorkommen dieses oder jenes Zeichens basiert.
Der Entscheidungsbaum ist unverändert von # 21 (yay!). Ich darf nicht genau den gleichen Code posten, daher kehren wir mit geringfügigen Änderungen zu C zurück.
quelle
21. C ++ (gcc) (Sprache 10 als Variante von C), 142 Bytes
Probieren Sie es online!
1
mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).2
mit Antwort 2 (Brain-Flak).3
mit Antwort 3 (APL).4
mit den Antworten 4 , 12 und 15 (Javascript).5
mit den Antworten 6 und 8 (R).6
mit den Antworten 10 , 17 und 20 (Bash).7
mit Antwort 11 und 19 (Mathematica).8
mit Antwort 13 (Python).9
mit Antwort 16 (Perl).10
mit Antwort 18 und dieser Antwort (C).Dieses Programm zählt die Anzahl der verschiedenen Zeichen (in ASCII werden Mehrbyte-UTF-8-Zeichen in mehrere Einträge aufgeteilt) und folgt dann einem sorgfältig gestalteten Entscheidungsbaum, der auf der Anzahl der Vorkommen dieses oder jenes Zeichens basiert.
Wissenswertes : Buchstabe K wurde bis zu diesem Eintrag nicht verwendet. Die Buchstaben I, E, Y, j, k, q, z bleiben ungenutzt.
quelle
22. Bash (+ Coreutils) [Sprache 6],
123131 BytesEDIT: Veröffentlichte zunächst eine falsche Version, sollte jetzt behoben sein.
Golf gespielt
Dieselbe Technik wie meine Antworten Nr. 20, Nr. 17 und Nr. 10 .
Daten
Testlauf
quelle
44
?25. Bash (Sprache 6), 169 Bytes
Dieselbe Technik wie meine Antworten Nr. 22, Nr. 20, Nr. 17 und Nr. 10 .
Entschuldigung @ Qwerp-Derp! ;) Ich verspreche, das ist der letzte :)
Golf gespielt
Daten
Ausgang testen
quelle