Utilice cualquier lenguaje de programación para mostrar números entre 1 y 99 (incluidos ambos) de tal manera que:
- los números están separados por un solo espacio,
- si un número es divisible por 3, debe estar entre paréntesis,
- si un número es divisible por 4, debe estar entre corchetes,
- Si un número es divisible entre 3 y 4, debe estar entre paréntesis y corchetes (con corchetes más cerca del número).
Su programa debe mostrar exactamente:
1 2 (3) [4] 5 (6) 7 [8] (9) 10 11 ([12]) 13 14 (15) [16] 17 (18) 19 [20] (21) 22 23 ([24]) 25 26 (27) [28] 29 (30) 31 [32] (33) 34 35 ([36]) 37 38 (39) [40] 41 (42) 43 [44] (45) 46 47 ([48]) 49 50 (51) [52] 53 (54) 55 [56] (57) 58 59 ([60]) 61 62 (63) [64] 65 (66) 67 [68] (69) 70 71 ([72]) 73 74 (75) [76] 77 (78) 79 [80] (81) 82 83 ([84]) 85 86 (87) [88] 89 (90) 91 [92] (93) 94 95 ([96]) 97 98 (99)
code-golf
kolmogorov-complexity
Monolica
fuente
fuente
Respuestas:
05AB1E , 23 bytes
-1 byte gracias a Kevin Cruijssen
Pruébalo en línea!
fuente
}?ð?
a]ðý
(cierra el bucle if y el bucle, y une la pila completa por espacios)Å€
Python 2 ,
686560 bytesPruébalo en línea!
fuente
R , 61 bytes
Pruébalo en línea!
fuente
Jalea ,
2120 bytesPruébalo en línea!
Cómo funciona
fuente
D , 110 bytes
Pruébalo en línea!
Portado de la respuesta C ++ de @ HatsuPointerKun.
fuente
Carbón , 30 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
J ,
5453 bytes1 byte menos gracias a @Jonah
Pruébalo en línea!
fuente
stdout
aquí ... Nunca había visto eso antes. @FrownyFrog#
. Yo había introducido un verbo auxiliar de sonido envolvente con()
y[]
:g=. {.@[ , ":@] , {:@[
. ugh la verbosidad!LF
lugar de_
. este último parece funcionar también.C, C ++,
136133131129128124 bytes-5 bytes gracias a Zacharý e inspirado por la función write () en lenguaje D (ver respuesta de Zacharý)
-2 bytes gracias a mriklojn
-12 bytes para la versión C gracias a mriklojn
-4 bytes gracias a ceilingcat
C Optimización específica: 115 bytes
fuente
inf f()
cosa? Perdón por eliminar mis comentarios, pensé que tenía algo más corto (no lo hice)printf
era una cosa. ¿No podrías usar el C stdio entonces?int i
exterior de la función (en alcance global), su valor predeterminado es 0 y el tipo de datos predeterminadoint
. Esto daría como resultado que su ciclo comience en 0, y para solucionarlo, podría mover el incremento a la expresión de condición en su ciclo for, haciendo que parezcai;f(){for(;++i<=99;)
")\0"+i%3
lugar dei%3?"":")"
. Además, creo que debe agregari=0
al comienzo del ciclo.Powershell, 60 bytes
Explicación:
$_, "($_)", "[$_]", "([$_])"
[!($_%3)+2*!($_%4)]
Guión de prueba menos golfizado:
Salida:
fuente
MathGolf ,
41403429 bytesNOTA: tiene un espacio final
Solo mi segunda respuesta de MathGolf ...
-5 bytes gracias a @JoKing .
Pruébalo en línea.
Explicación:
fuente
q
podía omitir y se hace implícitamente en bucles. Además, no sabía que había una cuerda incorporada de 2/3/4 cuerdas. Lástima que el truco de rotación no funcione con la matriz envuelta.Haskell , 77 bytes
Pruébalo en línea!
Me pregunto si
show[n]
se puede usar para acortar las cosas, hasta ahora en vano .fuente
Lua,
161123 bytesPruébalo en línea!
Sin golf:
fuente
Python 2 ,
1059788868584 bytesPruébalo en línea!
fuente
C (gcc) , 84 bytes
Hay un byte nulo al comienzo de cada "cadena de paréntesis".
Pruébalo en línea!
fuente
PowerShell ,
6762 bytesPruébalo en línea!
Básicamente, un FizzBuzz que usa multiplicación de cadenas por variables booleanas (implícitamente convertido a 1 o 0). Esas cadenas se dejan en la tubería y se reúnen dentro de un bloque de script entre comillas. Como el valor predeterminado
$OutputFieldSeparator
para una matriz es espacios, esto nos da implícitamente elementos de matriz delimitados por espacios.fuente
C #,
124117123 bytes-5 bytes gracias a Kevin Cruijssen
Prueba con:
fuente
x
lugar dei
, para no tener que preocuparse por elint
? (Aún tendría que configurarlo, por supuesto).i
y el hecho de que puedo inicializarlo en 0 cuando lo hagaInvoke
. ¿Pero eso no significa que tendría que incluir la declaración de t (Action<int>
) y la llamada (t.Invoke(0)
) en el bytecount?x=>{for(x=0;x++<99;)Console.Write((x%3==0?"(":"")+(x%4==0?"[":"")+x+(x%4==0?"]":"")+(x%3==0?")":"")+(x%99==0?"":" "));};
funcionaría.==0
pueden ser<1
.Rojo ,
9997 bytesPruébalo en línea!
fuente
Ruby ,
7266 bytesGracias a @ jonathan-frech y @ conor-obrien por el recorte adicional.
fuente
a.join b
para una matriza
y una cadenab
es equivalente aa*b
PowerShell,
988274676362 bytesLa friolera de -31 bytes gracias a @Veskah -5 bytes gracias a @ ASCII-only
Pruébalo en línea!
Todavía no estoy muy seguro de lo que he hecho aquí.
fuente
"$a"
aún sustituirá el valor. (Nota: las comillas simples no reemplazan$foo
, solo las comillas dobles). Otro truco es si solo le importa 0 o 1, por lo que puede usar la lógica booleana para guardar un byteperl -E, 60 bytes
Algunos bytes se pueden guardar si podemos usar nuevas líneas entre los números: en ese caso, podemos eliminar el
$,=$";
, cambiarlomap
a unfor
bucle, mientras lo movemossay
al bucle.fuente
/^1$|^(11+?)\1+$/
?Perl 6 ,
5148 bytesPruébalo en línea!
fuente
Lote, 145 bytes
El código cae en la subrutina, pero la cadena ya se ha impreso en este punto, por lo que el código se ejecuta de manera inofensiva.
fuente
PHP 103
for(;$i<1e2;$i++)$a.=$i%12==0?"([$i]) ":($i%3==0?"($i) ":($i%4==0?"[$i] ":"$i "));echo substr($a,5,-1);
https://www.ideone.com/SBAuWp
fuente
Limpio , 100 bytes
Pruébalo en línea!
fuente
sfk , 225 bytes
Pruébalo en línea!
fuente
Bash, 61 bytes
-14 bytes, gracias a Dennis
explicación
Muy claro:
seq
produce 1..99awk
con el separador de registro de salida (ORS
) establecido en espacio para que la salida sea una sola línea.Pruébalo en línea!
fuente
JavaScript (Node.js) , 57 bytes
Pruébalo en línea!
Cambió a la comunidad porque la optimización depende demasiado de ella
fuente
${n%4?n:`[${n}]`}
PHP, 65 bytes
o
(requiere PHP 5.5 o posterior)
Corre con ellos
-nr
o pruébalos en línea .fuente
Python 2 , 78 bytes
Pruébalo en línea!
Imaginé este enfoque genial,
'([%0d])'
pero no puedo acortar las expresiones.fuente
Java 8,
9291 bytes-1 byte gracias a @Dana
i->{for(;i++<99;)out.printf((i>1?" ":"")+(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i),i);}
Pruébalo en línea!
Solución alternativa, 82 bytes (con espacio final en la salida, no estoy seguro si eso está permitido):
i->{for(;i++<99;)out.printf((i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i)+" ",i);}
Explicación:
for(;i++<99;)
- un bucle for que va desde el valor dei
(reutilizado como entrada, que se considera 0 en este caso) a 99out.printf(<part1>+<part2>,i);
- formatea la cadena antes de imprimirla inmediatamente en stdout con el valor dei
donde
<part1>
está(i>1?" ":"")
: imprime el espacio antes de imprimir el número a menos que que ese número sea 1, en cuyo caso omite el espacioy
<part2>
es(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i)
- sii
es divisible entre 3 y 4,i
tiene corchetes cuadrados y redondos a su alrededor; si noi
es divisible por 3,i
tiene corchetes redondos; si noi
es divisible por 4,i
tiene corchetes; de lo contrario,i
no tiene corchetes.fuente
(i>1:" ":"")
i->{for(;i++<99;)out.printf((i>1?" ":"")+(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i),i);}
?