Titel gestohlen, inspiriert von Greg Hewgills Antwort auf Was ist der Unterschied zwischen JavaScript und Java?
Einführung
Java und JavaScript sind unter Programmierern häufig verwendete Sprachen und derzeit die beliebtesten Tags bei Stack Overflow. Doch wie wir alle wissen, haben die beiden, abgesehen von ähnlichen Namen, fast nichts gemeinsam.
Zu Ehren einer der berüchtigtsten Debatten der Programmierung und inspiriert von meinen jüngsten Frustrationen bei der Tag-Suche , schlage ich Folgendes vor:
Herausforderung
Schreiben Sie ein Programm, das einen String als Eingabe aufnimmt. Rückgabe, car
wenn der String mit "Java" beginnt und kein "JavaScript" enthält. Andernfalls kehren Sie zurück carpet
.
Beispiel für Ein- und Ausgabe
Wagen:
java
javafx
javabeans
java-stream
java-script
java-8
java.util.scanner
java-avascript
JAVA-SCRIPTING
javacarpet
Teppich:
javascript
javascript-events
facebook-javascript-sdk
javajavascript
jquery
python
rx-java
java-api-for-javascript
not-java
JAVASCRIPTING
Anmerkungen
- Bei der Eingabe muss die Groß- und Kleinschreibung nicht beachtet werden
- Nur Möglichkeiten zur Ausgabe sollten
car
oder seincarpet
- Imaginäre Bonuspunkte, wenn Ihre Antwort Java, JavaScript oder Regex verwendet
- Alternativer Titel: Java ist für JavaScript wie Schinken für Hamster
code-golf
string
decision-problem
pattern-matching
Stevoisiak
quelle
quelle
javacarpet
können Fehler auftreten, die in den vorhandenen Testfällen nicht auftreten.imaginary bonus points if your answer uses Java, Javascript, or Regex
, macht das solche Lösung bytecount komplex? ;)Alternate Title: Java is to JavaScript as ham is to hamster
Eigentlich ist der „Schinken“ in „Hamster“ ist verwandt mit dem Essen „ham“. Das Lebensmittel "Schinken" ist Schweinefleisch, und der Begriff "Hamster" leitet sich von dem verwandten Tier, dem Meerschweinchen, ab, dessen Fleisch Schweinefleisch auf langen Seereisen ersetzte, da die Tiere auf einem Schiff leichter aufzuziehen waren.Antworten:
Java / JavaScript Polyglot,
108107106 BytesAls Java ausführen
Probieren Sie es online!
Hinweis: Vertrauen Sie dem Highlight nicht, da es falsch ist. Richtig interpretiertes Java sieht wie
\u000A
folgt aus, da es im ersten Schritt der Kompilierung\n
de facto als Ende des Kommentars interpretiert wird , der mit dem Zeilenkommentar (//
) begann.Als JavaScript ausführen
Dank an @CowsQuak für die JS-Version.
Wie viele imaginäre Bonuspunkte für diese Antwort?
-1 Byte dank @Nevay in der Java-Antwort.
quelle
a
und zulässt=>
. Ich habe versucht, im Geiste des Golfspiels zu bleiben. Wenn ich etwas falsch gemacht habe, sag es mir bitte.JavaScript,
5049 Bytes1 Byte dank @ValueInk durch Neuordnung des regulären Ausdrucks eingespart
Testschnipsel
quelle
/^java(?!script)/i
Java (OpenJDK 8) ,
9282725857 BytesProbieren Sie es online!
Dank @Nevay 1 Byte gespart !
quelle
C (nur aufrufende Puts), 131 Bytes
Es hat zwar seine Probleme, besteht aber alle bereitgestellten Testfälle :)
na ja ... nein danke
quelle
05AB1E , 21 Bytes
Probieren Sie es online!
quelle
lD“¦‚“åi“¾„“ë“îá“åi…carë
3 Bytes mehr und 1 Stunde zu spät :(. Gute Arbeit.Python 2 , 68 Bytes
Probieren Sie es online!
-11 bytes dank notjagan
-2 bytes dank Dennis
quelle
;
ist es erforderlich, daher muss ich es sowieso verwenden. Die neue Zeile ist unnötig: P Deshalb habe ich es verwendet.C #,
8078 Bytesquelle
EXCELGoogle Sheets,8986 Bytes3 Bytes gespart dank Taylor Scott
Übernimmt eine Eingabe an A1
Erläuterung
quelle
Search
es durchFind
s für -2 Bytes ersetzen können und dass das weiter in eine Google Sheets-Formel für -3 Bytes übersetzt werden könnte, indem Sie die letzten drei Parens nicht schließenvim, 58 bytes
Probieren Sie es online!
quelle
g
Befehls könnte etwas kürzer sein, so etwas wie:g/\cjavascript/d
:g!/^\cjava/d
icarpet␛:s/pet..*
.Gelee , 27 Bytes
Probieren Sie es online!
quelle
Ruby , 42 + 1 = 43 Bytes
Verwendet die
-p
Flagge.Probieren Sie es online!
quelle
Retina ,
4437 BytesVielen Dank an @MartinEnder für das Golfen mit 7 Bytes!
Probieren Sie es online!
quelle
Common Lisp,
131125 BytesProbieren Sie es online!
Dank des # n = "Tricks" von Common Lisp wurde die Größe reduziert .
Erläuterung
quelle
C (tcc)
144136 BytesProbieren Sie es online!
Abgerollt:
quelle
Excel, 84 Bytes
quelle
Excel VBA, 76 Bytes
Anonyme VBE-Direktfensterfunktion, die Eingaben aus dem Bereich
[A1]
und den Ausgaben alscar
/carpet
status für das VBE-Direktfenster verwendetRegExp wird nicht verwendet
quelle
Python 3 , 95 Bytes
Probieren Sie es online!
Ja, es könnte kürzer sein, aber ich wollte versuchen, ein verschachteltes Lambda zu verwenden!
quelle
and
,or
,if
,else
Perl , 42 Bytes
Ich glaube die Antwort von stevieb hat eine falsche Ausgabe (habe das selbst ausprobiert - es gibt Auto für 'javajavascript' zurück). Das sollte funktionieren:
quelle
Mathematica, 82 Bytes
Regex
quelle
JAISBaL , 36 Bytes
Ausführlich / Erklärung:
JAISBaL war mein erster Versuch, eine Golfsprache zu entwerfen. Es ist also ziemlich eigenartig. Es gibt keine Übereinstimmungen oder Inhalte, Regex oder Ähnliches. Stattdessen müssen wir die resultierende Array-Länge aufteilen und überprüfen -regex ... aber keine andere regex unterstützung .... aus gründen.
Regex
gestohlenvon @Cows Quacks Antwort entlehnt .quelle
Python 2 , 69 Bytes
Derzeit 1 Byte länger als die kürzeste Python 2-Lösung.
Probieren Sie es online!
quelle
Perl , 36 Bytes
Führen Sie es so aus:
quelle
Batch, 91 Bytes
Übernimmt die Eingabe für STDIN. Batch verfügt nicht über einen Vergleichsoperator, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, aber es wird die Groß- und Kleinschreibung nicht berücksichtigt, sodass ich den ersten vier Zeichen ein temporäres Zeichen zuweisen und dann Java durch die Groß- und Kleinschreibung ersetzen kann, was dann zu einer leeren Zeichenfolge führen sollte. In der Zwischenzeit ersetze ich unempfindlich Javascript in der ursprünglichen Zeichenfolge, die es unverändert lassen sollte.
quelle
Lua, 96 Bytes
quelle
Perl,
988462 BytesProbieren Sie es online!
Danke an bytepusher
quelle
return $b;
durch just ersetzen$b;
. Perl gibt immer die zuletzt ausgewertete Anweisung zurück. Da wir uns nicht um Warnungen kümmern, können Sie sogar das ';' zu$b}
. Die Klammern um das if brauchen Sie nicht. Wenn Sie||
statt verwendenor
, können Sie nach dem regulären Ausdruck ein Leerzeichen speichern.!~
anstelle! =~
der zweiten Bedingung verwenden könnenlc$_[0]!~
. `->sub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
. Wenn Sie die ternärensub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
$_[0] =~//i||$_[0]!~//i
. Und schließlich, warum eine Variable?sub a{"car".($_[0]=~/javascript/i||$_[0]!~/^java/i?'pet':'');}
sollte gut gehen :). Und jetzt: Perl wird nett sein und Sie können $ _ [0] ohne Angabe verwenden (wenn auch nicht mit!~
):sub a{"car".(/javascript/i||!/^java/i?'pet':'')}
-> 48 :)Dart VM,
104 Bytes102 BytesErklärung :
Entgolfet:
Wir haben unsere übliche Hauptfunktion
Wir ersetzen
p
durch,p[0].toLowerCase();
damit wir keine neue Variable deklarieren müssen (var
plus ein Leerzeichen wären 4 zusätzliche Bytes)Wir fahren dann mit dem eigentlichen Drucken fort
Wir drucken
car
bedingungslos und verwenden Inline-Anweisungen, um zu prüfen, ob danach gedruckt werdenpet
soll oder nicht. Wenn die Zeichenfolge 'java' bei Index 0 ist und kein 'Javascript' enthalten ist, tun wir nichts (wir hängen tatsächlich eine leere Zeichenfolge an, aber sie hat keine Auswirkung), und ansonsten hängen wir anpet
.quelle
Rust, 97 Bytes
Ich bin mir ziemlich sicher, dass es eine kürzere Lösung gibt, aber es ist mein erster Versuch :)
quelle
Bracmat , 66 Bytes
Probieren Sie es online!
quelle