Descripción del desafío:
Escriba un programa que le pida al usuario su aporte El usuario ingresará Goodo Bad. No tiene que admitir ninguna otra entrada. Si el usuario ingresa Good, imprima Bady viceversa (stdout, etc.).
Notas:
1) No puede usar ningún otro par de dos palabras.
2) Su programa solo tiene que preguntar e imprimir una vez.
3) No necesita mostrar la cadena de solicitud.
4) La salida debe aparecer separada de la entrada por cualquier medio.
5) No se permite ninguna función para aceptar el valor y devolver el resultado; El usuario debe interactuar con el programa.
¡Buena suerte!
code-golf
string
interactive
Ishaq Khan
fuente
fuente

Respuestas:
Python 3 ,
3231 bytesPruébalo en línea!
¿Cómo?
Comprueba si la entrada es
'Good'mediante comparación'G'<input().Utiliza el hecho de que en Python
False==0yTrue==1para usar el resultado como elstartíndice de una porción de'GBoaodd'usar un undefinedstopy astepof2with'GBoaodd'[start:stop:step].Imprime en STDERR (guardando un byte con
exiten lugar deprint).fuente
'GoodBad'.strip(input())que es un byte más corto.APL (Dyalog Unicode) , SBCS de 13 bytes
Programa completo que solicita la entrada de stdin e imprime en stdout.
Pruébalo en línea!
⍞solicitud de entrada de stdin;GoodoBad¯1↓suelte el último caracter (d);GoooBa'GooBad'~multiset restan esos caracteres de estos;BadoGoodfuente
GooBadoGoodBad?GooBad, ya que agregar un carácter `` d '' hará que esta publicación sea de 14 bytes.Máquina de Turing pero mucho peor , 405 bytes
Pruébalo en línea!
Bueno, esto tomó un tiempo.
EXPLICACIÓN SIN TERMINAR :
fuente
favorite/disliked/"Turing-Machine-But-Way-Worse" is, without a doubt, my new favorite esolang.bash, 20 bytes
Pruébalo en línea!
fuente
8088 Assembly, IBM PC DOS, 25 bytes
Desmontado:
Explicación:
Mira la longitud de la cadena de entrada (más el espacio inicial) que DOS almacena en la dirección de memoria
80Hy la agregaAL(inicialmente0por DOS ). Si hay un número impar de1bits en la representación binaria de la longitud de la cadena, el indicador de paridad de la CPU se establece en impar y viceversa. Entonces, la' Bad'longitud de la cadena de entrada4(0000 0100) es paridad impar y la cadena de entrada' Good'es5(0000 0101) es paridad par.DXinicialmente se establece para que apunte a la cadena'Good$Bad$', y si la paridad es par (lo que significa que la entrada fue' Good') avance el puntero de la cadena por esa longitud (5) para que ahora apunte a'Bad$'. Si la paridad es extraña, no haga nada ya que ya apunta'Good$'. Luego use la API de DOS para mostrar una$cadena terminada en la consola.Ejemplo:
Descargue y pruebe GOODBAD.COM o compile desde el
xxdvolcado:fuente
Jalea , 8 bytes
Pruébalo en línea!
Un programa completo que espera una cadena con formato Python como argumento
¿Cómo?
fuente
Python 3,
38373433 bytesPruébalo en línea!
exit(): devuelve un código de salida como salida"C">input(): Comprueba si la entrada es más grande que la cadenaCen orden alfabéticoand"Good": Si el resultado esTrue, entonces regresa conGoodor"Bad": De lo contrario, vuelve conBadfuente
print("C">input()and"Good"or"Bad")exit(input()[3:]and"Bad"or"Good")También funciona para el mismo número de bytes.C,
3938 bytesPruébalo en línea!
Guardado un byte gracias a @tsh.
fuente
main(){puts("Good\0Bad"+getchar()%6);}38 bytes#include<stdio.h>?\0?brainfuck , 72 bytes
Pruébalo en línea!
Explicación:,> +++++>,>,>,>,
Lea ya sea: "G", 5, "o", "o", "d" o "B", 5, "a", "d", 0
[<<<< [- <->> --- <] <. >> +. >>. >>>] Si el último carácter no es cero:
Resta 5 de la primera celda una vez y de la tercera celda tres veces. Incremento celda 3
Celdas de salida 1, 3, 5.
<[<<< [- <+ >> +++ <] <. >> - ..>. >>]
De lo contrario, agregue 5 a la primera celda una vez y a la tercera celda tres veces.
Decremento celda 3
Celdas de salida 1, 3, 3, 4
fuente
Haskell,
3634 bytesPruébalo en línea!
Editar: -2 bytes gracias a @cole
fuente
R ,
42373532 bytes-10 gracias a Giuseppe y AkselA!
Pruébalo en línea!
fuente
"C"lugar del primero"Bad"como en esta respuesta ahorrará otro par de bytes.`if`(readline()>"C","Bad","Good")como una respuesta válida? Soy nuevo en este juego y sus reglas.scan(,"")lugar dereadline(). No dude en venir a golfR , la sala de chat de golf R si tiene alguna pregunta específica sobre R :-)sed ,
21 1613 bytesGracias @Cowsquack por las sugerencias.
Pruébalo en línea! Pruébalo en línea!Pruébalo en línea!TIL
ccortocircuitará el análisis de la línea actual.fuente
cofrece una solución más cortacJavaScript 31 bytes
Me gusta la respuesta de Arnauld, pero me gustaría que acepte la entrada del usuario y se pueda ejecutar en StackExchange de esta manera:
fuente
Befunge-93 ,
2018 bytesPruébalo en línea!
-2 bytes gracias a Jo King
fuente
Ruby , 22 bytes
Pruébalo en línea!
fuente
p getslo que tiene la misma longitud. (mi comentario original decía que podía guardar 2 bytes, pero no tomé en cuenta la impresión del resultado)-pindicador daría la respuesta más eficiente:$_=$_>?F?:Bad:"Good"son 20 bytes. Pruébalo en línea!05AB1E ,
109 bytes-1 byte gracias a @Emigna .
Pruébelo en línea o verifique ambos casos de prueba .
Explicación:
Ver este consejo 05AB1E mío (sección Cómo usar el diccionario? ) , Para entender por qué
”‚¿‰±”es"Good Bad".fuente
á.áno puedo creer que no lo haya pensado, pero al mismo tiempo sé que nunca lo habría pensado. ;) ¡Gracias! (Y sí, también tenía algunas alternativas de 10 bytes.)”‚¿Bad”IKtambién es un 9.Java (JDK) , 124 bytes
Pruébalo en línea!
Lo más probable es que todavía haya margen de mejora, pero soy completamente nuevo en el golf de código.
fuente
!="Bad"Rubí,
3028 bytesNo es el más golfista, pero me gusta el abuso de split para eliminar la nueva línea final y convertirla en una matriz en una sola llamada.
¡EDITE -2 bytes gracias a la sugerencia de Value Ink!
fuente
"Good"o"Bad"(con comillas); No estoy seguro de que eso esté permitido.putsimprime cada elemento de una matriz en una línea separada. Es 3 bytes más caro quep, pero se iguala ya que saca el[0]y luego ahorra 2 bytes más al no necesitar pares. Pruébalo en línea!Lenguaje de programación Shakespeare , 582 bytes
(Espacio en blanco agregado para facilitar la lectura)
Pruébalo en línea!
Me sale la primera letra de la entrada con
Open mind. Entonces necesito determinar qué es. De todos los números entreB= 66 yG= 71, mi fuerza bruta dice que 66 es el más corto de escribir (the sum ofa big cat the cube ofa big big cat), por lo que comparo la primera letra de la entrada con 66. La escena I continúa imprimiendoGoodo la escena V imprimeBad.fuente
Retina 0.8.2 , 20 bytes
Pruébalo en línea! El enlace incluye un conjunto de pruebas. Explicación:
Conviértete
GoodenGod.Transponga las letras
GoaBcon el reverso de esa lista, intercambiando asíGconByocona, es decir, intercambiandoGodconBad.Conviértete
GodenGood.fuente
Stax ,
98 bytesEjecutar y depurarlo
Esencialmentereplace("BadGood", input, "").Multiset xor con "GooBa". Algoritmo copiado textualmente de Luis Mendo
fuente
Excel, 24 bytes
Usando la
<Csugerencia de @ MilkyWay90 .fuente
PHP ,
2623 bytesUn ternario es simplemente más barato:
Pruébalo en línea!
Respuesta original, 26 bytes.
Pruébalo en línea!
O 21 bytes (pero esta es básicamente la respuesta de Arnauld )
Pruébalo en línea!
fuente
readline()es probable que sea más apropiado que$argn.Jalea , 9 bytes
Pruébalo en línea!
Explicación
Diferencia simétrica de varios conjuntos entre la entrada y la cadena
“GooBa”.fuente
PowerShell ,
2220 bytesPruébalo en línea!
-2 bytes gracias a mazzy
fuente
Barril , 22 bytes
fuente
brainfuck , 52 bytes
Pruébalo en línea!
Se basa en que Bad sea una letra más corta que Good, por lo que la última entrada está vacía.
Explicación:
fuente
Boolfuck , 47 bytes
Pruébalo en línea!
Utiliza el hecho de que básicamente puedes tomar la entrada como bits y luego invertir ciertos bits para convertirla en la letra opuesta.
Explicación:
fuente
Barril ,
-rt2017151387 bytes (SBCS)Transpiles a:
Es un puerto de la respuesta 05AB1E. Esencialmente:
"GoodBad"GoodBadcon nada.-rtbandera le dice a Keg que lea los tokens de derecha a izquierda.Historial de respuestas
Transpila a lo siguiente:
Explicación
fuente
Carbón , 13 bytes
Pruébalo en línea!
Explicación:
fuente