Kennst du diese sprache


34

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 1wichtigste 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 2in der Challenge verwendete nd-Sprache ist. Ein Beispielprogramm ist:

print(1 if input()[0]=="a"else 2)

Bei der ersten Vorlage gibt es aus 1und 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 1es das erste Programm und sich selbst ausgeben (da Ruby die verwendete 1Sprache ist) und das zweite Programm, das es ausgeben muss 2.


Regeln:

  • Wenn ndie Herausforderung derzeit Antworten enthält, müssen mindestens floor(n / 3)verschiedene Sprachen vorhanden sein. Jeder Beitrag, der gegen diese Regel verstößt, wird disqualifiziert.
  • Keine zwei "Nachbarantworten" (z. B. Antwort nund Antwort n+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 nist 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.


1
Kann ein Nutzer zwei aufeinanderfolgende Beiträge hintereinander veröffentlichen?
Kritixi Lithos

So wie es aussieht, könnte ich meine Antwort Nr. 6 unverändert als Antwort Nr. 8 wiederholen. Danach könnte Martin seine Nummer Nr. 7 (sofern ich mich nicht irre) usw. wiederholen, bis die Antwort Nr 15 vor Erreichen der vorgeschriebenen Schwelle (dh floor(n / 3)Sprachen). Ich vermute, das ist kein beabsichtigtes Verhalten.
Plannapus

@plannapus ist mir auch aufgefallen. Natürlich ist es Ihr Ziel, die letzte Antwort zu haben. Wenn Sie also wissen, dass ich auch eine triviale Folge haben würde, möchten Sie vielleicht Dinge komplizieren (über die ich nicht nachgedacht habe, bevor Sie meine eigene Antwort gepostet haben).
Martin Ender

3
Die Anzahl der zugewiesenen Bytes nimmt in der geometrischen Folge zu, und diese Herausforderung wird wahrscheinlich erst dann beendet, wenn die Sprachen ausgehen, nicht weil der Code zu lang wird.
Wolfram

2
IMO hätte ein vernünftiges festes Limit (zB 384 oder 256 Bytes) besser funktioniert und am Ende einen harten Wettbewerb ausgelöst.
Zeppelin

Antworten:


4

26. > <> (Sprache 12), 164 Bytes

Mein erstes Programm in> <>! Es sind 156 Zeichen, aber 164 Bytes in UTF-8.

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
{:}&1+&=?v
      .&0/
v+!?='>'i41i
v+?='y'i47
v+?=' 'i12
v+?=' 'i24
v4
v6
v7
v8
v9
va
  v?(0:i
v1
n;\b1laa*)?+
/"^mwfPes{'tc"i2&01.;

Dies druckt:

  • 1mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit den Antworten 4 , 12 und 15 (Javascript).

  • 5mit den Antworten 6 und 8 (R).

  • 6mit den Antworten 10 , 17 , 20 , 22 und 25 (Bash).

  • 7mit den Antworten 11 und 19 (Mathematica).

  • 8mit Antwort 13 (Python).

  • 9mit Antwort 16 (Perl).

  • 10mit den Antworten 18 , 21 und 23 (C / C ++).

  • 11mit 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{'tcwerden auf den Stapel gelegt. Ein einzelnes Eingabezeichen wird gelesen ( i). (Nennen wir dieses Zeichen Czur Erläuterung.) 2 wird in das Register ( 2&) eingetragen . Dann springen wir zum Anfang der zweiten Zeile (Zeile 1) ( 01.).

Diese Zeile vergleicht Cmit jedem Zeichen auf dem Stapel. Eine Kopie von Cwird auf der Unterseite des Stapels aufbewahrt. {dreht den Stapel so, dass er Coben liegt; :dupliziert es; }Dreht die Kopie wieder nach unten. Wir erhöhen das Register ( &1+&), bis eine Übereinstimmung gefunden wird. (Wenn Calso "c" ist, enthält das Register 3, wenn die Übereinstimmung gefunden wurde. Wenn C"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 Cist, 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 die nAnweisung, 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 + bund 1erhalten 12, diese Sprache; Andernfalls bleibt 1 auf dem Stapel.


23

1. Netzhaut , 0 Bytes

Probieren Sie es online!

Das leere Programm wird gedruckt, 1wenn eine leere Eingabe (dh selbst) gegeben wird, da es zählt, wie oft die leere Regex mit der Eingabe übereinstimmt (was immer der Fall ist 1+length(input)).


12

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.

{      (<>)}{}              #If not zero
 <>(())                     #Push one to the other stack
              (<>{}())      #Switch to other stack and increment by one

Könnten Sie diese Antwort bearbeiten? Ich habe es aus Versehen gewählt :)
Conor O'Brien

9

3. APL, 7 Bytes

' {'⍳⊃⍞

Erläuterung:

      ⍞  read from the keyboard
     ⊃   first item of list, or space if empty
' {'⍳    index into the string ' {', giving N+1 (=3) if not found

8

10. Bash (+ Coreutils) [Sprache 6], 4474 Bytes

Fixed Version (gibt die Sprach-ID zurück)

expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G

Hinweis: Hiermit wird die nachstehende Zeile nach dem eingegebenen Programmtext erwartet


7

9. Retina (Sprache 1), 20 Bytes

$|}\{|[:'][^]']|,\b1

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 Basis 1für alle Eingaben.
  • }\{ findet eine einzelne Übereinstimmung im zweiten Programm (Brain-Flak) und erhöht die Anzahl dort auf 2 . 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).
  • Das 'aus dem vorherigen Teil führt bereits zu einer Übereinstimmung in den R-Programmen, also brauchen wir drei weitere. Die Teilzeichenfolge wird ,1in 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.

Hm, habe gerade gemerkt, dass dies die R-Antworten überhaupt nicht vereitelt, weil 1es einfach ihre Standardausgabe ist. Ich werde mit der nächsten Antwort etwas dagegen unternehmen müssen.
Martin Ender

7

18. C (Sprache 10), 121 Bytes

Dies ist der C89- oder C90-Standard. Es funktioniert entweder mit clang oder gcc bei Try It Online.

main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}

Dies druckt:

  • 1mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit den Antworten 4 , 12 und 15 (Javascript).

  • 5mit den Antworten 6 und 8 (R).

  • 6mit den Antworten 10 und 17 (Bash).

  • 7mit Antwort 11 (Mathematica).

  • 8mit Antwort 13 (Python).

  • 9mit 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):

#include <string.h>
#include <stdio.h>
int main(){
    char *v=" ^{ s ePfwm", b[999];
    gets(b); /* buffer overrun if more than 998 characters in the input.
                could be a problem if we get to 191 answers */
    char *c = strchr(v, b[0]); /* Find first character of input in v, or null */
    int n = strlen(b);
    if (!n) {
        printf("1");
    } else if (c) {
        printf("%d", c-v); /* Index of first character of input in v */
    } else if (n > 99) {
        printf("4");
    } else if (n > 60) {
        printf("5");
    } else if (n > 15) {
        printf("1");
    } else {
        printf("3");
    }
    return 0;
}

6

5. Retina (Sprache 1), 23 Bytes

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}

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 .


4

4, JavaScript (ES6), 32 Byte

s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1

Gibt 1 für einen leeren Eingang aus, 2, wenn der Eingang mit a beginnt {, 4, wenn er mit a beginnt sund 3, andernfalls.


Sie können den s[0]=='{'bys[0]>'z'

1
@ Masterzagh Ich dachte auch darüber nach, wie man Golf spielen kann, aber leider ist dies kein Code-Golf: /
Kritixi Lithos

@KritixiLithos Na ja, aber er hat schon ein bisschen Golf gespielt, also dachte ich, er würde noch weiter gehen wollen.

@Masterzagh Leute sollten es vermeiden, gültige Antworten in solchen Herausforderungen zu bearbeiten, da sie a) spätere Antworten, b) Antworten, an denen gerade gearbeitet wird, ungültig machen können.
Martin Ender

@MartinEnder, du hast recht. Als solches werde ich es nicht bearbeiten. Ich weiß, es sieht gut aus (wegen der ternären Operatoren), aber ich habe es nicht absichtlich so geschrieben ... Trotzdem vielen Dank für das Feedback!
Luke

4

11. Mathematica [Sprache 7], 53 Bytes

Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&

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 /._@__->1Spit- Fehler, aber die Ausgabe wird durch die Regel repariert, die jede nicht bewertete Funktion in transformiert 1.


Ich denke, es ist wirklich an der Zeit, diese Strategie des ersten Charakters durcheinander zu bringen :)
Martin Ender

1
Ich wollte, aber dann fiel mir ein, dass ich auch für meine eigene Sprache richtig ausgeben musste: D
Greg Martin

4

16. Perl (Sprache 9), 94 Bytes

while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}

Probieren Sie es online!(überprüft alle Antworten). Ausgänge "1234151516748149"

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 Antwort 10 (Bash).
  • 7 mit Antwort 11 (Mathematica).
  • 8 mit Antwort 13 (Python).
  • 9 mit dieser Antwort (Perl).

Das Programm überprüft die Eingabelänge und ordnet sie der aktuellen Sprachverteilung zu.


3

6. R (Sprache 5), 61 Bytes

cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

Überprüft das erste Zeichen der Eingabe und wählt die Ausgabe entsprechend aus.

Dies gibt also aus:

  • 1mit den Antworten 1 und 5 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit Antwort 4 (Javascript).

  • und 5mit dieser Antwort.

Verwendung:

> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
{<>(())(<>)}{}(<>{}())
2
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
' {'⍳⊃⍞
3
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
4
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
5

Um dies außerhalb einer REPL auszuführen, siehe Kommentar unter Antwort 8.
Plannapus

3

8. R (Sprache 5), 76 Bytes

c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)

Überprüft die ersten Buchstaben des Eingangs, und vergleicht sie mit einem Vektor (in dieser Reihenfolge) die leere Zeichenfolge enthält, {, ', sundc . 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:

  • 1mit den Antworten 1 , 5 und 7 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit Antwort 4 (Javascript).

  • und 5mit Antwort 6 und dieser Antwort (R).

Wenn ich mich nicht irre, betrug die zulässige Byteanzahl für diese Antwort 94 Bytes.


Zu Ihrer Information: R Online-Interpreten (Rfiddle, Ideone und Tryitonline) scheinen Probleme mit dem Umgang mit Standardinhalten zu haben (zumindest mit readline ()) und verhalten sich daher nicht richtig. Wenn Sie dies (und die vorherige Antwort) ausprobieren möchten, müssen Sie lokal eine installierte Version von R ausprobieren, fürchte ich.
Plannapus

^ Ok, außerhalb einer REPL readlinesollte durch ersetzt werden readLines(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.
Plannapus

3

12. Javascript (Sprache 4), 117 Bytes

Hinweis: Ich habe ein Zeichen geändert, um einen Fehler in diesem Zeichen zu korrigieren.

c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;

Prüft den ersten Buchstaben der Eingabe, wenn es c ist, prüft es die Länge der Eingabe.

Ausgänge:

  • 1 für die Antworten 1, 5, 7, 9
  • 2 für Antwort 2
  • 3 für Antwort 3
  • 4 für Antwort 4 und diese Antwort
  • 5 für Antworten 6, 8
  • 6 für Antwort 10
  • 7 für Antwort 11

3

13. Python (Sprache 8), 110 Bytes

Hinweis: Diese Antwort wurde 6 Stunden nach der Veröffentlichung auf Empfehlung des OP geändert.

from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N

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:

  • 1mit den Antworten 1 , 5 , 7 und 9 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit den Antworten 4 und 12 (Javascript).

  • 5mit den Antworten 6 und 8 (R).

  • 6mit Antwort 10 (Bash).

  • 7mit 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 .


Was ist die aktuelle Bytegrenze?
Vi.

@Vi .: Nun, es war 149 für Antwort 13 und 163 für Antwort 14; Das OP änderte jedoch nur die Regeln für die Anzahl der Bytes in 45 + 5n, sodass es 110 Bytes für Antwort 13 und 115 Bytes für Antwort 14 sind.
Nick Matteo

Sie sollten wahrscheinlich die 110-Byte-Lösung einrichten.
Clismique

@ Qwerp-Derp: Alles klar. Hoffentlich wird das die laufende Arbeit von niemandem unterbrechen.
Nick Matteo

OK, warten Sie auf ca. 60 Antworten, bis das Byte-Limit für Java-freundliches Land erreicht ist.
Vi.

3

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.

typeset -A p
p=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)
echo ${p[(k)$1]:-1} #@<`w&X{

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:

  • 1mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).

  • 2mit antwort 2 (Brain-Flak).

  • 3mit antwort 3 (APL).

  • 4mit den Antworten 4 , 12 und 15 (Javascript).

  • 5mit den Antworten 6 und 8 (R).

  • 6mit den Antworten 10 , 17 , 20 und 22 (Bash).

  • 7mit den Antworten 11 und 19 (Mathematica).

  • 8mit antwort 13 (Python).

  • 9mit antwort 16 (Perl).

  • 10mit den Antworten 18 , 21 und 23 (C / C ++).

  • 11 mit dieser Antwort (Zsh).

Probieren Sie es online!


Ich denke, dies ist die erste mehrzeilige Antwort ... +1 von mir.
Clismique

2

14. Retina (Sprache 1), 39 Bytes

'[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$

Probieren Sie es online! (Prüft alle gültigen Eingaben.)


1
Komm schon Martin, poste in einer anderen Sprache ... könntest du auch die Antwortformatierung machen?
Clismique

3
@ Qwerp-Derp Dies wird tatsächlich zu einer interessanten Variante des Standard-Regex-Golfs. Anstatt eine Reihe von Eingängen zu haben und einige von ihnen abgleichen zu müssen und andere nicht, müssen Sie hier eine bestimmte Anzahl von Übereinstimmungen für jeden der Eingänge erhalten. Ich frage mich, ob dieser Regex irgendwann exponentiell explodieren wird.
Martin Ender

Sind es wirklich 39 Bytes? TIO meldet 37 Bytes.
Arnauld

1
@Arnauld TIO ist hartcodiert, um nur Zeichen für Retina zu zählen, da Sie häufig Einzelbyte-Codierungen verwenden. Für diese Antwort ist jedoch UTF-8 erforderlich.
Martin Ender

2

15. Javascript (Sprache 4), 108 Bytes

Golf gespielt

t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1

2

17. Bash (+ coreutils + openssl) (Sprache 6), 103 Bytes

Golf gespielt

expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x

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:

6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Prüfung

for i in `seq 17`
do
  echo -n `cat lchain|sed -n $i'{p;q}'|cut -c1`=\>
  cat lchain|sed -n $i'{p;q}'|cut -c6-|\
  expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
done

6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

2

19. Mathematica (Sprache 7), 96 Bytes

Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&

Unbenannte Funktion, die eine Liste von Zeichen als Eingabe verwendet und eine Ganzzahl zurückgibt:

  • 1mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit den Antworten 4 , 12 und 15 (Javascript).

  • 5mit den Antworten 6 und 8 (R).

  • 6mit den Antworten 10 und 17 (Bash).

  • 7mit Antwort 11 und dieser Antwort (Mathematica).

  • 8mit Antwort 13 (Python).

  • 9mit Antwort 16 (Perl).

  • 10mit 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 # >". using ToCharacterCode@StringSplit@wandelt diesen String in eine Liste mit zehn Listen mit ganzen Zahlen in diesem Bereich um und ermittelt Position[...,Mod[Length@#,59,33]][[1,1]], welche der zehn Unterlisten mit der geänderten Länge der Eingabe übereinstimmt.


1

20. Bash (+ coreutils + openssl) (Sprache 6), 121 Byte

Golf gespielt

expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u

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

6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Test (Ausgabe)

./test
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2

1

23. C (gcc) (Sprache 10), 142 Bytes

main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

Probieren Sie es online!

  • 1mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit den Antworten 4 , 12 und 15 (Javascript).

  • 5mit den Antworten 6 und 8 (R).

  • 6mit den Antworten 10 , 17 , 20 und 22 (Bash).

  • 7mit Antwort 11 und 19 (Mathematica).

  • 8mit Antwort 13 (Python).

  • 9mit Antwort 16 (Perl).

  • 10mit 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.


0

21. C ++ (gcc) (Sprache 10 als Variante von C), 142 Bytes

main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

Probieren Sie es online!

  • 1mit den Antworten 1 , 5 , 7 , 9 und 14 (Retina).

  • 2mit Antwort 2 (Brain-Flak).

  • 3mit Antwort 3 (APL).

  • 4mit den Antworten 4 , 12 und 15 (Javascript).

  • 5mit den Antworten 6 und 8 (R).

  • 6mit den Antworten 10 , 17 und 20 (Bash).

  • 7mit Antwort 11 und 19 (Mathematica).

  • 8mit Antwort 13 (Python).

  • 9mit Antwort 16 (Perl).

  • 10mit 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.


Es gibt eine Option, um C ++ - Sprache 11 zu berücksichtigen, ein paar Bytes bleiben übrig, um dies zu berücksichtigen.
Lyth

0

22. Bash (+ Coreutils) [Sprache 6], 123131 Bytes

EDIT: Veröffentlichte zunächst eine falsche Version, sollte jetzt behoben sein.

Golf gespielt

expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L

Dieselbe Technik wie meine Antworten Nr. 20, Nr. 17 und Nr. 10 .

Daten

6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Testlauf

./test
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

Was ist das 44?
Clismique

22 * 2? 󠀠󠀠󠀠󠀠󠀠
Vi.

@ Qwerp-Derp, nur ein Tippfehler
Zeppelin

Kommen Sie, Ihre Antworten sind immer langweilig jetzt - wenn Sie Ihre nächste Antwort wie diese, ich überlege Downvoting (es ist nicht interessant, weißte?)
clismique

1
Da stimmt etwas nicht. Ihre Hash-Buchstaben enthalten nur 20 Einträge (3PgT usw.). Bei leerer Eingabe erhalte ich eine Fehlermeldung, und bei Antwort 2 erhalte ich "4" (beide haben mit Antwort 20 richtig funktioniert)
Nick Matteo

0

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

{ echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8

Daten

Beachten Sie, dass Zeilenumbrüche als \ n für die Antwort # 24 codiert sind

6 25 { echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8
B 24 typeset -A p\np=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)\necho ${p[(k)$1]:-1} #@<`w&X{
A 23 main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Ausgang testen

6=>6
B=>11
A=>10
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.