Desafío de golf
Dado el siguiente ASCII "Verde".
| |
| |> |
| | |
| O |
| |
| |
| |
| |
| |
| |
Dejar |
denotar una pared
Dejar |
denotar la mitad del asta de la bandera
Dejar >
denotar la bandera en el poste
Dejar O
denotar el agujero
Dejar o
denotar la bola
Las dimensiones del "verde" son 10x10. Hay diez espacios entre las dos paredes |
.
También hay diez espacios, vacíos o no, entre la parte superior y la parte inferior del green.
Reto
Ingrese un valor x e y o genere dos números aleatorios para "lanzar" una pelota de golf al green.
Si la x, y generada no toca el agujero o el asta de la bandera / salida de la bandera "¡Inténtalo de nuevo!"
Si la x, y generada golpea la salida del agujero "Hole in One!"
si la x, y generada golpea la salida del polo "Lucky Shot!"
si la x, y generada golpea la salida de la bandera "¡Cerrar uno!"
Después del disparo, muestra la ubicación de la pelota en el green con a o
, reemplazando a cualquier personaje que golpee. También haga salir el dicho respectivo arriba.
Ejemplos:
//Hole in one example, the O was replaced with a o
Randomed x = 3
Randomed y = 4
"Hole in One!"
| |
| |> |
| | |
| o |
| |
| |
| |
| |
| |
| |
//Clone example, the top half of the pole was replaced with a o
Randomed x = 3
Randomed y = 2
"Lucky Shot!"
| |
| o> |
| | |
| O |
| |
| |
| |
| |
| |
| |
//Lucky Shot example, the > was replaced with a o
Randomed x = 4
Randomed y = 2
"Close One!"
| |
| |o |
| | |
| O |
| |
| |
| |
| |
| |
| |
//Try Again example, the <space> was replaced with a o
Randomed x = 5
Randomed y = 1
"Try Again!"
| o |
| |> |
| | |
| O |
| |
| |
| |
| |
| |
| |
Diviértete y buena suerte y como este es el código de golf, ¡ el código más corto gana!
Respuestas:
JavaScript (ES6)
210208193184 bytesManifestación
fuente
Gelatina , 78 bytes
Juega un juego de habilidad o un juego de disparos en TryItOnline!
(Crap-shoot cuesta más bytes).
¿Cómo?
fuente
Pitón 2,
290264262252248245 bytesNo es bonito ni corto, pero estoy cansado y es el
primerorespuesta de Python. Ingrese la toma en formato x, y.Editar
Golfed off 26 redefiniendo la forma en que se construye la lista. Aún así, no tuve suerte con la larga declaración if.
-2 reemplazando el if largo por un diccionario y un if más corto.
-10 con gracias a @ Noodle9 - me lo perdí :)
-4 - gracias de nuevo :)
Otros 3 de descuento. Gracias.
Para cualquiera que esté interesado en la lógica, sin comentarios (1316 bytes, pero aún cabe fácilmente en un disco de 3.5 "si alguien los recuerda):
Definitivamente la primera vez para mí que un diccionario ha sido el mejor formato de datos en un desafío de golf.
fuente
C, 236 bytes
Sin golf:
fuente
Scala, 238 bytes
Usando la indexación cero.
Esto es demasiado legible :(
Explicación:
He usado la fórmula
1+x+13*y
para calcular el índice correcto, ya que cada fila tiene 13 caracteres de largo (2 bordes, una nueva línea y 10 espacios) más un desplazamiento de uno porque (0,0) debería ser el segundo carácter.fuente
Perl,
225209 bytesLas dos nuevas líneas literales guardan cada una un byte. Bastante estándar Imprime la declaración, luego el tablero de juego.
fuente
Carbón de leña , 99 bytes
Toma una entrada basada en 1, separada por espacios, en stdin. La mayor parte del código es para imprimir (uno de) los cuatro mensajes. Pruébalo en línea!
Nota: el carbón todavía es un trabajo en progreso. Este código funciona a partir de la confirmación actual . Si deja de funcionar en el futuro (en particular, si el enlace TIO no funciona como se esperaba), haga un ping y trataré de agregar una versión actualizada que no compita y que funcione.
Explicación
fuente
Brain-Flak , 1466
1938bytesPruébalo en línea!
¿Gané?
fuente
TI-Basic, 183 bytes
Gracias a Dios, TI-Basic usa tokens.
los
|
no puede normalmente ser mecanografiadas, pero es en el conjunto de caracteres.Avíseme si el resultado de la toma tiene que estar en minúsculas.
Agregaré una captura de pantalla de un resultado de programa de ejemplo más adelante.
fuente
Groovy - 235 bytes
Mi primer intento: un cierre maravilloso que acepta 2 enteros de 0 a 9 como las coordenadas X e Y para el disparo.
fuente
Dyalog APL , 147 (o 127) bytes
Toma (y, x) como argumento.
Desde la versión 16.0, casi podemos reducir a la mitad el conteo de bytes con el nuevo
@
operador;@
pone el operando izquierdo en las posiciones de operando derecho en el argumento derecho:NewChars @ Positions ⊢ Data
Código ligeramente modificado para permitirlo en TryAPL:
Hoyo en uno , Lucky Shot 1 , Lucky Shot 2 , Close One , Aleatorio
fuente
Turtled , 164 bytes
Una vez más, mostrando el equilibrio de Turtlèd entre golfiness y verbosidad para las cosas más simples (como incrementar un número), Turtlèd supera a todos menos a los langostas del golf.
Pruébalo en línea
Tenga en cuenta que es mitad cero indexado y mitad indexado; x es uno indexado, y es cero indexado; 3,3 es un hoyo en uno
fuente
R,
230226 bytesGracias a @billywob por -2 bytes, darse cuenta
M[a,b]
es equivalente aM[c]
en un par de casos.Molesto, las dos
cat
llamadas (!) No puedencat
combinarse en una sola, ya que elfill
argumento desordena el mensaje. Argh!fuente
function(x,y){M=matrix("|",10,10);M[2:9,]=" ";M[34]="0";M[4,2:3]="f";M[15]=">";m=switch(M[y,x],">"="Close One","f"="Lucky Shot","0"="Hole In One","Try again");M[y,x]="o";cat(m,"!\n",sep="");cat(gsub("f","|",M),sep="",fill=10)}
f=
mi solución de todos modos. Remoto.