Desafío
Cree el programa más corto que cumpla con los requisitos.
Requisitos
El código debe generar una cuadrícula de ceros de 5x5, así:
00000 00000 00000 00000 00000
El código debe aceptar una entrada (columna, fila, carácter). La cuadrícula debe cambiar en consecuencia:
Comienzo:
00000 00000 00000 00000 00000
Entrada:
(2,5,*)
Salida:
0*000 00000 00000 00000 00000
(Nota: la esquina inferior izquierda es la posición 1,1).
El programa debe devolver un mensaje de error que no sea la cuadrícula si la entrada de la fila / columna no es 1,2,3,4 o 5. Este puede ser cualquier mensaje de su elección (siempre que no sea la cuadrícula), también lo
0
es Una salida de error aceptable.El programa debe funcionar con todos los caracteres ASCII imprimibles (de un teclado de EE. UU.).
EL GANADOR
El ganador será la persona que tenga el código más corto y cumpla con todos los requisitos. Si más de una respuesta funciona y tiene la misma longitud (la más corta), la persona que respondió primero será la ganadora.
0
por error y la grilla por éxito?Respuestas:
Dyalog APL ,
171310 bytesSolicita una matriz cerrada que contiene (fila, columna) y luego un carácter. Da error de índice en la entrada defectuosa.
Pruébalo en línea!
⊖
voltear al revés el resultado de⍞
carácter ingresado@
reemplazar el contenido en la posición⎕
entrada-evaluada (fila, columna adjunta)⊢
de5 5⍴
Conjunto de 5 × 5 de0
cerosfuente
⊢
necesario? Creo que en este caso es redundante.(⊂⎕)5 5
como una única matriz de 3 elementos: el argumento para⍴
.Ruby,
157149 bytesError en entrada malformada o fuera de posición encuadernada
Gracias a ConorO'Brien (8 bytes) y afuous (2 bytes) por ayudar a guardar bytes
fuente
loop do...end
->loop{...}
; Creo que tambiénArray.new(5,[0]*5)
funciona, o incluso[*[0]*5]*5
.Array.new(5,[0]*5)
haga una matriz de referencia y[*[0]*5]*5
haga una matriz plana*
. Entonces eso todavía crea una serie de referencias.Array.new(5){[0]*5}
se puede reemplazar con(1..5).map{[0]*5}
para guardar 2 bytes.Lote, 199 bytes
Errores fuera si la posición está fuera de rango.
fuente
<
, como^<
. No estoy seguro aunque.PHP,
11110097 bytesimprime
E
si la fila / columna está fuera del rango.Corre con
php -r <code> <row> <column> <character>
fuente
Python, 66 bytes
fuente
Dyalog APL,
242018 bytes¡Guardado 4 bytes gracias a Zgarb! ¡Ahorré 2 bytes gracias a Adam!
Solicitudes de entrada. Ver abajo para una explicación.
20 bytes
Asignar a una función y llamarla
y x f 'c'
. P.ej:Explicación
{...}
es una función con argumento izquierdo⍺
y argumento derecho⍵
.⋄
separa las declaraciones, por lo que hay tres declaraciones:La primera instrucción se
a←5 5⍴0
establece ena
a5
por5
cuadrícula de0
s.La segunda instrucción establece el miembro en las coordenadas dictadas por
⍺
a⍵
(es decir, el carácter).Por último, se realiza
⊖
ena
y retorno que, produciendo los primeros dea
revertido.fuente
{a←5 5⍴0⋄a[⊂⌽⍺]←⍵⋄⊖a}
Guarda algunos bytes.a←5 5⍴0⋄a[⊂⎕]←⍞⋄⊖a
JavaScript (ES6),
7376 bytesLanza un
TypeError
si la columna o la fila está fuera de rango.Manifestación
Mostrar fragmento de código
fuente
c
or
es menor que 1?c == 0 || r == 0
. Pero supongo que tienes razón: lo actualizaré para evitar valores negativos.C #, 199 bytes
Basado en la respuesta de Pete Arden
Sin golf:
fuente
05AB1E ,
2722 bytesNo devuelve cuadrícula cuando fila / columna> 5.
Pruébalo en línea!
Versión previa
fuente
Jalea , 28 bytes
Esto se siente demasiado tiempo ...
TryItOnline!
¿Cómo?
fuente
JavaScript (ES6), 89 bytes
Porque amo la recursividad. Lanza un
ReferenceError
sobre coordenadas inválidas.fuente
Mathematica, 38 bytes
fuente
Brain-Flak 415 Bytes
Incluye +3 para
-c
Pruébalo en línea!
Primero toma el carácter para insertar, luego la fila y luego la columna sin espacios.
La mayor parte de esto es solo manejo de errores. Brain-Flak no tiene una buena manera de verificar si los valores están en un rango. Para los errores, no genera nada o solo el carácter que se suponía que debía insertarse. Resolver el problema real solo toma 211 bytes:
fuente
Excel VBA, 67 bytes
Salidas al rango A1: E5 en la hoja activa del proyecto vba, sale con
cuando se proporciona una entrada inválida.
Código:
Uso:
Salida (del ejemplo anterior) :
fuente
C #, 208 bytes
Golfizado:
Sin golf:
Pruebas:
fuente
c
y / or
están fuera de los límites, arrojará un,IndexOutOfRangeException
por lo que es posible que pueda eliminar la primera declaración if, aunque no he verificado las especificaciones correctamente para eso. Puede compilar en aFunc<int, int, char, string>
para guardar bytes, creo que necesita agregarlousing System.Linq;
debido a laReverse
llamada, aunque no puedo recordarlod[r - 1] = d[r - 1].Substring(0, c - 1) + a + d[r - 1].Substring(c);
ad[--r] = d[r].Substring(0, c - 1) + a + d[r].Substring(c);
para guardar 4 bytesWinDbg, 95 bytes
Casi la mitad de los que sólo la verificación de los índices están en el rango de entrada ... se hace estableciendo los pseudo-registros
$t0
,$t1
y$t2
(donde$t2
tiene el valor ASCII del carbón para reemplazar). Por ejemplo,(2,5,*)
como el ejemplo sería:Imprime
0
en caso de error.Cómo funciona:
Salida de muestra:
fuente
Haskell, 77 bytes
Ejemplo de uso:
Si
x
yy
están dentro del rango, el bucle externo e interno lo atraviesan[1..5]
y toman el charc
si golpea el dadox
yy
y de lo0
contrario. Six
oy
no está dentro del rango, seNon-exhaustive patterns
genera una excepción.fuente
Octava 49 bytes
fuente
QBIC ,
5350 bytesEDITAR: ahora que sé que no tengo que mostrar la cuadrícula de inicio, he cambiado las entradas del usuario
_!_!_?
por los parámetros de la línea de comandos::;
, ahorrando 3 bytes.Versión original: Esto se detiene entre imprimir la cuadrícula 0 y tomar las coordenadas para la sustitución, mostrando la cuadrícula 0.
Imprime 5 cadenas de 5
0
's, solicita al usuario 2 entradas numéricas y 1 entrada de cadena, comprueba si los números son <5 y utiliza laLOCATE
función QBasic para sustituir el carácter correcto.fuente
Java, 99 bytes
fuente
> <> (Pescado), 36 bytes (no competidor)
Pruébalo aquí!
Esto se ejecuta mediante la colocación de los parámetros en la pila como [
chr
,y
,x
].chr
La instrucción cambia uno de los ceros en la parte inferiorp
. Probablemente haya mejores formas de hacerlo, pero pensé que era una situación única y entretenida en la que esta función> <> es útil.Explicación
Este programa simplemente resta 1 de
x
(como en> <>, en0
realidad sería la primera columna), intercambiax
cony
, luego cambia el punto del cuadro de códigox, y
enchr
viap
.y
no necesita 1 restado de él, ya que el código ya está compensado por 1.Explicación no competitiva
Esto no es competitivo porque en realidad no produce resultados. Acabo de encontrar esto extremadamente divertido. Si esto se considera una salida válida, ¡hágamelo saber!
Tampoco es competitivo porque
y
puede ser 0, pero creo que ese es el único problema con la respuesta. Lo arreglaré si esto se considera una salida válida, pero de lo contrario, solo hace que la respuesta sea menos entretenida ...fuente
Bash, 59 bytes
Golfed
$ 1 , $ 2 - fila, columna, $ 3 - reemplazo de caracteres, el error se informa a través del código de salida
Prueba
fuente
Vim,
60474276 pulsaciones de teclasLa entrada está en el formato (en la primera línea):
Con el cursor empezando por el principio
Si la entrada no es válida, arroja:
E492: Not an editor command: ^
El cide que produce la salida son solo
42
bytes, pero para crear un error, mi bytecount aumenta drásticamente.fuente
Java 8,
194192bytesPruébelo aquí con la entrada correcta.
Pruébelo aquí con una entrada incorrecta.
Esto sería
116114 bytes en su lugar como función en lugar de programa completo:Pruébalo aquí
Explicación:
fuente