Herausforderungsbeschreibung:
Schreiben Sie ein Programm, das den Benutzer zur Eingabe auffordert. Der Benutzer gibt Good
oder ein Bad
. Sie müssen keine weiteren Eingaben unterstützen. Wenn der Benutzer eingibt Good
, drucken Sie Bad
und umgekehrt (zu stdout usw.).
Anmerkungen:
1) Sie können kein anderes Paar von zwei Wörtern verwenden.
2) Ihr Programm muss nur einmal gefragt und ausgedruckt werden.
3) Sie müssen keine Eingabeaufforderungszeichenfolge anzeigen.
4) Die Ausgabe muss in jedem Fall von der Eingabe getrennt erscheinen.
5) Keine Funktion darf den Wert annehmen und das Ergebnis zurückgeben; Der Benutzer muss mit dem Programm interagieren.
Viel Glück!
code-golf
string
interactive
Ishaq Khan
quelle
quelle
Antworten:
Python 3 ,
3231 BytesProbieren Sie es online!
Wie?
Testet, ob die Eingabe
'Good'
durch Vergleichen erfolgt'G'<input()
.Nutzt die Tatsache, dass in Python
False==0
undTrue==1
zu verwenden , um das Ergebnis als denstart
Index einer Scheibe'GBoaodd'
unter Verwendung eines undefiniertestop
undstep
von2
mit'GBoaodd'[start:stop:step]
.Druckt nach STDERR (Speichern eines Bytes mit
exit
anstelle vonprint
).quelle
'GoodBad'.strip(input())
was ein Byte kürzer ist.APL (Dyalog Unicode) , 13 Byte SBCS
Volles Programm, das zur Eingabe von stdin auffordert und nach stdout druckt.
Probieren Sie es online!
⍞
Eingabeaufforderung von stdin;Good
oderBad
¯1↓
lösche das letzte Zeichen (d
);Goo
oderBa
'GooBad'~
Multiset subtrahiert diese Zeichen von diesen;Bad
oderGood
quelle
GooBad
oderGoodBad
?GooBad
, als würde das Hinzufügen eines Zeichens `` d`` diesen Beitrag zu 14 Bytes machen.Turing-Maschine aber viel schlimmer , 405 Bytes
Probieren Sie es online!
Nun, das hat eine Weile gedauert.
UNVOLLSTÄNDIGE ERKLÄRUNG :
quelle
favorite/disliked/"Turing-Machine-But-Way-Worse" is, without a doubt, my new favorite esolang.
Bash, 20 Bytes
Probieren Sie es online!
quelle
8088 Assembly, IBM PC DOS, 25 Byte
Zerlegt:
Erläuterung:
Prüft die Länge der Eingabezeichenfolge (plus Leerzeichen), die DOS unter der Speicheradresse speichert
80H
, und fügt sie hinzuAL
(zunächst0
unter DOS ). Wenn1
die binäre Darstellung der Zeichenfolgenlänge eine ungerade Anzahl von Bits enthält, wird das CPU-Paritätsflag auf ungerade gesetzt und umgekehrt. So Eingabestring' Bad'
Länge4
(0000 0100
), ungerade Parität und Eingabestring' Good'
ist5
(0000 0101
) ist gerade Parität.DX
ist anfangs so eingestellt, dass sie auf den String zeigt'Good$Bad$'
, und wenn die Parität gerade ist (dh die Eingabe war' Good'
), stellen Sie den String-Zeiger um diese Länge vor (5
), sodass er jetzt auf zeigt'Bad$'
. Wenn die Parität ungerade ist, tun Sie nichts, da sie bereits auf verweist'Good$'
. Verwenden Sie dann die DOS-API, um a anzuzeigen$
terminierte Zeichenfolge für die Konsole .Beispiel:
Laden Sie GOODBAD.COM herunter und testen Sie es oder erstellen Sie es aus einem
xxd
Dump:quelle
Gelee , 8 Bytes
Probieren Sie es online!
Ein vollständiges Programm, das eine mit Python formatierte Zeichenfolge als Argument erwartet
Wie?
quelle
Python 3,
38373433 BytesProbieren Sie es online!
exit()
: gibt einen Exit-Code als Ausgabe zurück"C">input()
: Prüft, ob die EingabeC
in alphabetischer Reihenfolge größer als die Zeichenfolge istand"Good"
: Wenn das Ergebnis istTrue
, wird mit zurückgegebenGood
or"Bad"
: Andernfalls wird mit zurückgegebenBad
quelle
print("C">input()and"Good"or"Bad")
exit(input()[3:]and"Bad"or"Good")
funktioniert auch für die gleiche Anzahl von Bytes.C
3938 BytesProbieren Sie es online!
1 Byte dank @tsh gespeichert.
quelle
main(){puts("Good\0Bad"+getchar()%6);}
38 Bytes#include<stdio.h>
?\0
?Haskell,
3634 bytesTry it online!
Edit: -2 bytes thanks to @cole
quelle
brainfuck, 72 bytes
Try it online!
Explanation: ,>+++++>,>,>,>,
Read either: "G", 5, "o", "o", "d" or "B", 5, "a", "d", 0
[<<<<[-<->>---<]<.>>+.>>.>>>] If the last character is not zero:
Substract 5 from the first cell once and from the third cell thrice. Increment cell 3
Output cells 1, 3, 5.
<[<<<[-<+>>+++<]<.>>-..>.>>]
Otherwise add 5 to the first cell once and to the third cell thrice.
Decrement cell 3
Output cells 1, 3, 3, 4
quelle
R,
42373532 bytes-10 thanks to Giuseppe and AkselA!
Try it online!
quelle
"C"
instead of the first"Bad"
as in this answer will save another couple bytes.`if`(readline()>"C","Bad","Good")
be a valid answer? I'm new to this game and its rules.scan(,"")
instead ofreadline()
. Feel free to come to golfR, the R golf chatroom if you have any R-specific questions :-)sed,
21 1613 bytesThanks @Cowsquack for the hints.
Try it online! Try it online!Try it online!TIL
c
will short-circuit the current line's parsing.quelle
c
offers a shorter solutionc
JavaScript 31 bytes
I like Arnauld's answer, but I would like it to accept user input and be runnable on StackExchange like so:
quelle
Befunge-93,
2018 bytesTry it online!
-2 bytes thanks to Jo King
quelle
Ruby, 22 bytes
Try it online!
quelle
p gets
and so it's the same length. (my original comment said you could save 2 bytes, but I didn't account for printing the result)-p
flag would give the most efficient answer:$_=$_>?F?:Bad:"Good"
is 20 bytes. Try it online!05AB1E,
109 bytes-1 byte thanks to @Emigna.
Try it online or verify both test cases.
Explanation:
See this 05AB1E tip of mine (section How to use the dictionary?), to understand why
”‚¿‰±”
is"Good Bad"
.quelle
á
.á
I can't believe I hadn't thought about it, but at the same time I know I would have never thought about it. ;) Thanks! (And yeah, I had a few 10-byte alternatives as well.)”‚¿Bad”IK
is also a 9.Java (JDK), 124 bytes
Try it online!
Most likely, there‘s still some room for improvement, but I‘m entirely new to code golfing.
quelle
!="Bad"
Ruby,
3028 bytesNot the golf-iest, but I like the abuse of split to remove the trailing newline and convert to an array in one call.
EDIT -2 bytes thanks to Value Ink's suggestion!
quelle
"Good"
or"Bad"
(with quotes); I'm not sure that's allowed.puts
prints each element of an array on a separate line. It's 3 bytes more expensive thanp
, but it evens out since you take out the[0]
and then save 2 more bytes by no longer needing parens. Try it online!Shakespeare Programming Language, 582 bytes
(Whitespace added for readability)
Try it online!
I get the first letter of the input with
Open mind
. Then I need to determine what it is. Of all the numbers betweenB
=66 andG
=71, my brute forcer says 66 is the shortest to write (the sum ofa big cat the cube ofa big big cat
), so I compare the first letter of the input to 66. Scene I continues to printGood
, or Scene V printsBad
.quelle
Retina 0.8.2, 20 bytes
Try it online! Link includes test suite. Explanation:
Turn
Good
intoGod
.Transpose the letters
GoaB
with the reverse of that list, thus exchangingG
withB
ando
witha
, i.e. exchangingGod
withBad
.Turn
God
intoGood
.quelle
Stax,
98 bytesRun and debug it
Essentiallyreplace("BadGood", input, "")
.Multiset xor with "GooBa". Algorithm copied verbatim from Luis Mendo
quelle
Excel, 24 bytes
Using @MilkyWay90's
<C
suggestion.quelle
PHP,
2623 bytesA ternary is just cheaper:
Try it online!
Original answer, 26 bytes
Try it online!
Or 21 bytes (but this is basically Arnauld's answer)
Try it online!
quelle
readline()
is likely more appropriate than$argn
.Jelly, 9 bytes
Try it online!
Explanation
Multiset symmetric difference between the input and the string
“GooBa”
.quelle
PowerShell,
2220 bytesTry it online!
-2 bytes thanks to mazzy
quelle
Keg, 22 bytes
quelle
brainfuck, 52 bytes
Try it online!
Relies on Bad being one letter shorter than Good, so the last input is empty.
Explanation:
quelle
Boolfuck, 47 bytes
Try it online!
Uses the fact that you can basically just take in the input as bits and then invert certain bits to turn it into the opposite letter.
Explanation:
quelle
Keg,
-rt
2017151387 bytes (SBCS)Transpiles to:
It's a port of the 05AB1E answer. Essentially, it:
"GoodBad"
GoodBad
with nothing.-rt
flag tells Keg to read tokens from right to left.Answer History
Transpiles to the following:
Explanation
quelle
Charcoal, 13 bytes
Try it online!
Explanation:
quelle