Tienes que hacer un juego Demasiado bajo --- Demasiado alto (TLTH) en el código más corto (en bytes)
Reglas del juego:
- La computadora elegirá un número aleatorio fuera del rango entero (-32768..32767).
- Ahora pensará en un número y lo ingresará.
- La computadora le dirá si su número es menor (
TOO LOW
) o mayor (TOO HIGH
) que el número elegido. - Cuando adivina el número, la computadora debería mostrar
Congrats! You found the number!
.
Reglas de código:
No utilice los caracteres
T
,O
,L
,W
,H
,I
yG
(ni en minúsculas ni en mayúsculas) en caracteres o frases literales.
Por ejemplo:tolower(T); // Acceptable cout<<"T"; // Unacceptable char ch='T'; // Unacceptable
Elimine 300 bytes si su código puede mostrar las reglas del juego antes de comenzar el juego.
Elimine 50 bytes si su código puede contar el número de turnos y mostrar el número de turnos tomados al final del juego de esta manera:
"Congrats! You found the number in n turns!"
donde n es el número de turnos realizados, en lugar de
"Congrats! You found the number!"
Elimine 25 bytes de su puntaje si su código puede decirle al usuario que el número que ingresó está fuera del rango entero.
Por ejemplo:Enter the number: 40000 Sorry! This number is out of range Please Enter the number again:
Elimine 25 bytes Si su código toma el número aleatorio no de ninguna función aleatoria incorporada.
Elimine 10 bytes Si su código muestra "felicidades" en color (elija cualquier color excepto el blanco predeterminado).
Reglas de envío:
Agregue un encabezado con su nombre de idioma y puntaje con todos los cálculos de recompensas y su explicación.
Publique su código de golf y sin golf.
Ganador
- La respuesta con menos bytes gana.
- Si hay un empate, la respuesta con más votos gana.
- El ganador será elegido después de 5 días.
EDITAR : muestra la salida de tu código.
EDITAR-2 : puede ignorar la Regla-1 para las Reglas-2,3 y 4 en las Reglas de Código
La mejor de las suertes :]
WhileURong(USayNumbr;ISayBigrOrSmalr)
Respuestas:
JavaScript (-210 puntos (
190
bytes -300
(para las reglas) -50
(para el número de conjeturas) -25
(para no usar ninguna fuente de números aleatorios incorporada) -25
(para decirle si la entrada está fuera del rango de un signo16
-bit entero) ):Golfizado:
Código completo (muy bien formateado):
Salida:
fuente
0
. :-( Además, ¿no debería haber un espacio enTOO LOW
/TOO HIGH
?Perl 5.10+:
159144 bytes - 350 = -206 puntosEdición 2: con el reciente cambio de reglas que me permite usar cualquier cadena literal para el mensaje "felicidades", puedo guardar 15 bytes de mi solución original de 159 bytes. No hay nada particularmente novedoso o interesante sobre el nuevo código anterior en comparación con el código anterior (acabo de deshacerme de la
p
función y llamosay
directamente en su lugar), por lo que el resto de esta publicación describirá el código original, que se muestra a continuación:Sí, estoy abusando de la regla 1. ¿Quién necesita cadenas, cuando puedes tener palabras vacías ? ;-)
Ejecute con
perl -M5.010
para habilitar lasay
característica Perl 5.10+ (o reemplace el cuerpo de lap
función conprint join$",@_,$/
un costo adicional de 5 bytes).Puntajes de bonificación:
El código no contiene literales de cadena en sentido estricto, por lo que diría que, técnicamente, la regla 1 no se infringe. El truco es que, en Perl, sin
use strict
, cualquier identificador que no corresponda a una palabra clave o subrutina de lenguaje conocido simplemente se evaluará con su propio nombre. La funciónp
simplemente toma una lista de palabras y las imprime, separadas por espacios.Ejemplo de juego:
Editar: Oh, claro, las reglas dicen que también necesito publicar una versión no codificada del código, así que aquí va. Técnicamente, es "des-golf", ya que generalmente compongo mis programas de golf de código en forma más o menos completa desde el principio, y a veces puede ser difícil eliminar todas las optimizaciones "golf" sin cambiar fundamentalmente cómo algunas partes del programa de trabajo. Aún así, al menos he intentado agregar espacios en blanco, comentarios y nombres de funciones / variables más significativos:
PD. Como alternativa, si solo usar palabras vacías en lugar de cadenas se siente demasiado engañoso para usted, aquí hay una solución de 182 bytes que no usa las letras
TOLWHIG
incluso en palabras vacías (pero las usa en un operador de transliteración). Todavía recibe los mismos bonos, para un puntaje total de 182 - 350 = −168 puntos :La salida se ve exactamente igual a la anterior. Según las reglas (originales), uso las letras
t
yi
al imprimir las reglas, ya que está permitido; Sin embargo, eliminar incluso esos usos solo costaría dos bytes adicionales. Por el contrario, poner todo el resultado en mayúscula (que, según los comentarios anteriores, parece estar permitido) me permitiría guardar tres bytes.fuente
def method_missing *args;args.join' ';end
.Python 2: -80 puntos (270-300-50)
La puntuación es de 270 caracteres, menos 300 por mostrar las instrucciones, menos 50 por mostrar el número de conjeturas en las "felicidades". cadena, para un total de 80 puntos negativos.
Versión sin bucle del bucle, con cadenas sin escape:
La
cmp
función incorporada devuelve 0 si los valores son iguales, -1 si el primero es más pequeño y 1 si el primero es más grande. Utilizo el valor para indexar una tupla de cadenas, y luego nuevamente como la condición de salida del bucle. La indexación de una secuencia con un índice negativo (como -1) cuenta desde el final de la secuencia, en lugar de desde el principio.Estuve muy tentado a omitir las importaciones y solo usarlas
4
como mi número aleatorio, según XKCD 221 (¿eso calificaría para el bono de -25 caracteres?).Ejemplo de ejecución (completa con un error, donde no puedo hacer cálculos negativos):
fuente
g
es cero y elwhile
ciclo termina.You can ignore Rule-1 for Rules-2,3 & 4 in Code Rules
JavaScript 293, -300 (reglas) - 50 (pantalla de vueltas) - 25 (advertencia de rango) - 25 (sin función aleatoria) = -107 (nueva puntuación)
r=new Date%65536+~(z=32767);n=x="";for((A=alert)("\107uess my number, \111 \147\151ve feedback");(x=prompt())!=r;A(0>(x-~z^x-z)?"\164\157\157 "+(x>r?"\150\151\147\150":"\154\157\167"):"Ran\147e: "+~z+" - "+z))n++;A("C\157n\147ra\164s! Y\157u f\157und \164\150e number \151n "+ ++n+"\164urns!")
Yo diría que, según las convenciones RGB, que el negro es un color, pero eso sería un poco trampa ...
Ah, y podría agregar, ¡tampoco romper la regla # 1!
Salida en una serie de alertas y avisos
Código sin golf:
fuente
A=alert;
y reemplazando todoalert
conA
. Y uno más si mueve la alertaA(0>(x...
después del punto y comaprompt())!=r;)n++1
.feedback if too high/low
cuál usa 84 caracteres actualmentei give feedback
(lo que solo requeriría\151 \147\151ve feedback
o 24 caracteres para guardar 60 caracteres .)n++
bucle for alx=prompt(n++)
para evitar tener que hacerlo+ ++n+
en la alerta final. Ahorraría 3.Javascript, 324 bytes, puntaje -76
[Actualizado debido a cambios en las reglas]
Puntuación total: -76
Golfizado:
Vamos a deshacer este desastre.
Primero, correctamente ideado (pero esto todavía no es muy bueno con el código ofuscado):
Segundo, renombrar identificadores:
Entonces, la función desencriptar obtiene todos los caracteres entre ASCII 33 (
!
) y ASCII 58 (:
) y agrega 32, convirtiéndolos en caracteres en el rangoA-Z
.Vamos a descifrar más el código al descifrar todas las cadenas:
Y finalmente, vamos a mover algunas instrucciones a otros lugares, reemplazar la larga cadena ternaria con ifs y elses, unir cadenas de concatenación y simplificar las matemáticas para aumentar la legibilidad:
Muestra:
fuente
C - 272 caracteres - 300-50-25 = -103
Código de golf:
Sin golf:
Salida:
fuente
C: 237 - 300 - 50 - 25 - 25 - 10: -173 puntos
-300 para las reglas, -50 para mostrar el número de conjeturas, -25 para no usar ningún generador de números aleatorios incorporado, -25 para el mensaje de fuera de rango y -10 para colorear el mensaje de felicitaciones.
Sin golf:
Ejemplo de ejecución:
La última línea aparece como roja.
fuente
bash, -137
Puntuación
273 (bytes) - 300 (reglas) - 50 (intentos de conteo) - 25 (advertencia OOF) - 25 (PRNG personalizado) - 10 (color)
Versión de golf
Tenga en cuenta que la última línea es un comentario, por lo que no contiene cadenas o literales de caracteres.
Versión sin golf
Salida de muestra
La última línea está impresa en verde.
fuente
C #: -30 puntos
Golfizado :
Para ejecutarlo, póngalo en un archivo (code.cs) y ejecútelo con scriptcs en la línea de comando:
scriptcs code.cs
.Ungolfed : expandió los nombres de las variables en algo más fácil de entender y cambió las letras hexadecimales a letras reales.
Salida de muestra disponible aquí .
fuente
T
,O
,L
,W
,H
,I
yG
(ni en minúsculas ni en mayúsculas) en caracteres o frases literales. "T
,O
,L
... con\x54
,\x4F
,\x4C
... y ya está bien.C ++ 505 + (-300-50-25-25) = 105
-300: Instrucciones
-50: Muestra el número de vueltas
-25: No utiliza la función aleatoria
-25: advierte al usuario sobre la entrada fuera de rango
GOLFED
SIN GOLF
SALIDA
fuente
C, 183-300-25 = -142
183 bytes -300 para las reglas -25 para no usar una biblioteca aleatoria
versión sin golf:
muestra de ejecución:
fuente
"TOO HIGH"
y"TOO LOW"
ambos contienen caracteres ilegalesTOLWHIGtolwhig
.TOO LOW
permite ?J - 190 char -300 -50 = -160 pts
Explicación (recuerde que J se lee de derecha a izquierda):
'WhileURong(USayNumbr;ISayBigrOrSmalr)'1!:2]2
- Imprime las reglas.32767-?2^16[
- Mezcle el valor de retorno y luego genere un número aleatorio entre 0 y 2 ^ 16-1 inclusive. Luego, ajústelo al rango -32768..32767 restándolo de 32767.1>:@]^:(...)^:_~
- Elx u^:v^:_ y
patrón es como un bucle while.x
permanece constante yy
se muta con cada ejecución deu
. Esto continúa hasta quex v y
devuelve 0 o nox u y
produce ningún cambio eny
. Las~
permutas de los dos argumentos, de modo quex
será el número aleatorio yy
comenzarán a 1. Nuestrou
es>:@]
, que incrementa este 1 y lo devuelve, por lo que actúa como un contador y elx u y
condición de terminación no puede ocurrir.[:".1!:1@1:
- Tome el contador e ignore su valor, utilizando el número 1 en su lugar (1:
). Lea en una línea de entrada (1!:1
) desde el teclado (identificador de archivo 1) y ejecútelo (".
). Esto permite que J, cuyo signo negativo es normalmente_
, tome números en la forma-n
(se evalúa como negación aplicada al númeron
).]`(...)@.*@-
- Tome la diferencia del número aleatorio de antes y la conjetura (-
). Ahora, seleccionamos la siguiente acción dependiendo de si esta diferencia es cero (@.*
). Si es así, devuelve (]`
) ese 0 como resultado parax v y
que la ejecución finalice y todo el ciclo while devuelva el contador. Más...71+13 8 8 _39,(5 8 16;1 2 0 1){::~0&>
- Devuelve la matriz5 8 16
si el número es negativo y1 2 0 1
si es positivo. Luego anteponga13 8 8 _39
y agregue 71 a todo, para que tengamos uno84 79 79 32 76 79 87
o84 79 79 32 72 73 71 72
.1[2:1!:2~a.{~
- Convierta estos números en caracteres ASCII indexando el alfabetoa.
con ellos. Luego imprímalos con1!:2
(usando el identificador de archivo 2) y devuelva 1 como resultado dex v y
.'Congrats, you found the number in ',' turns!',~":
- Cuando finaliza el bucle, devuelve el contador. Conviértalo en una cadena con":
y colóquelo entre las cadenas'Congrats, you found the number in '
y' turns!'
.Salida de muestra:
fuente
JavaScript -40
335 - 300 (reglas) - 50 (conteo de turnos) - 25 (fuera de rango)
No voy a ganar, pero creo que es una forma divertida de obtener las cartas.
Golfed
Sin golf
Salida de muestra
fuente
APL (Dyalog) (157-300-50 = -193)
(Sí, estos cuentan como bytes, el juego de caracteres APL cabe en un byte).
He reclamado "mostrar las reglas del juego" y "contar el número de turnos".
Ejemplo de ejecución:
Sin golf:
fuente
Pogo: -95 (255-300-50)
Si el número es 10:
El recuento de caracteres se basa en el código con todos los espacios en blanco eliminados.
Tenga en cuenta que el pogo no es un lenguaje falso. Lo creé y escribí un compilador e IDE para él aquí: https://github.com/nrubin29/Pogo
fuente