El recuento es un sistema de recuento simple que funciona en la base 5. Hay varios sistemas de recuento diferentes que se utilizan en todo el mundo, pero el que se usa en la mayoría de los países de habla inglesa es quizás el más simple: contar unidades marcando líneas verticales, luego para cada quinta marca pone una línea horizontal a través de la colección anterior de cuatro. Esto agrupa las marcas de conteo en grupos de 5 (y hace que sea más fácil contarlas rápidamente).
Vas a escribir un programa que muestre marcas de conteo hasta un valor dado. Pero, contar solo en la base 5 es aburrido. Por lo tanto, su programa también debería poder mostrar los recuentos en diferentes bases.
Entrada
La entrada será uno o dos valores enteros no negativos separados por una coma (por ejemplo, 9
o 8,4
). El primer número es el valor que debe mostrar la cuenta. El segundo valor es la base de la cuenta. Si no se da el segundo valor, use la base 5 .
Salida
La salida será el valor ingresado representado como marcas de conteo de arte ASCII. Aquí hay algunos ejemplos con los que puede probar su programa: ¡su salida debe coincidir exactamente con ellos!
Entrada: 12
o12,5
| | | | | | | | | |
-+-+-+-+- -+-+-+-+- | |
| | | | | | | | | |
Entrada: 7,3
| | | | |
-+-+- -+-+- |
| | | | |
Entrada: 4,2
| |
-+- -+-
| |
Entrada: 6,1
o 6,10
(observe los espacios iniciales)
| | | | | |
| | | | | |
| | | | | |
Tenga en cuenta también que la base 1 está destinada a ser inconsistente, solo se deben usar líneas verticales.
Si alguno de los valores ingresados es 0, no debería haber ningún tipo de salida (y su programa debería finalizar correctamente).
Reglas
- Este es el código de golf , por lo que gana la implementación correcta más corta (en bytes).
- La entrada / salida puede estar en cualquier medio adecuado (por ejemplo, stdin / stdout, archivo ...).
- La entrada puede ser en forma de argumentos de línea de comandos múltiples o separados por espacios, etc. si es más adecuado para su idioma de destino.
- Las nuevas líneas finales están permitidas en la salida. Los espacios finales no lo son. Esta regla solo se aplica cuando hay una salida (es decir, no cuando el valor ingresado es 0).
- Su código debe ser predeterminado a la base 5 cuando no se ingresa ninguna base.
6,1
parecer más la salida de-+- -+- -+- -+- -+- -+-
?-+-
representaría dos, porque hay una línea vertical y una puntuación horizontal a través de ella. La base 1 solo tendría líneas verticales. @AndoDaan enmendado.--- --- --- --- --- ---
entonces. Para mantener la coherencia con las otras bases, debe colocar un golpe horizontal a través deb-1
líneas verticales. Si se pretende que sea inconsistente, debe indicarlo explícitamente.Respuestas:
CJam 103 85 72 caracteres
Pruébalo en http://cjam.aditsu.net/ .
original
Funciona definiendo un conjunto de recuentos con espacios, líneas y una l para espacios que deberían permanecer espacios. Luego aprovecha la función er (tranliteración) para hacer la segunda línea. La parte más ineficiente es tratar con los casos especiales 1 y 0. Se editará a medida que lo mejore. Consejo, me tomé demasiado tiempo para darme cuenta: como la segunda entrada es 1 es igual que infinito o la primera entrada +1, redefinirla cuando es igual a 1 ahorra mucho trabajo.
más mejorado hasta ahora con comas delimitadas
más mejorado hasta ahora con entrada delimitada por espacios
Naturalmente, como CJam está realmente diseñado para entradas delimitadas por espacios. Colocar la entrada en 20 3 en lugar de 20,3 es un gran beneficio.
fuente
Python 2 -
111 108 119 144 140 136 135134 - PruébaloOk, vamos a intentarlo:
Editar: he pasado por alto que no debería haber salida si
n==0
ob==0
. Esto me cuesta 11 caracteres. :(Editar: Ok, después de solucionar el segundo problema mencionado en los comentarios, mi solución básicamente convergió con la de BeetDemGuise.
fuente
b
debería ser 5 en este caso). Lo dejaré más claro en la pregunta. Editar: ¡oh, no importa, lo arreglaste justo cuando hice este comentario!n/b
lugar den//b
?Golpetazo,
239 228 199 189188Aquí está mi intento, se podría jugar mucho al golf.
Nota: la segunda línea no resta 5 de 2, ¡establece un valor predeterminado si
$2
está vacío!fuente
{1..$n}
Funciona en lugar de`seq $n`
?h=8;echo {1..$h}
salidas{1..8}
Python -
171143El programa es bastante sencillo:
t,b
. Si eso falla, simplemente asigne los valores correctos.1
, cambie su valor a algo que pueda manejar todas las líneas verticales fácilmente (t+1
).t
yb
no son cero.EDITAR 1: use la
input
función en lugar deraw_input
después de jugar un poco.EDIT 2: Gracias a Falko por señalar un pequeño error con mi comprobación distinta de cero. Ahora nuestro código es básicamente idéntico, menos algunos nombres de variables y alguna pequeña lógica.
EDITAR 3: Gracias a cómo Python compara secuencias y diferentes tipos , podemos comparar
i
con alist
para obtener una versión más corta de nuestrotry...except
bloque.Aquí está la versión sin golf:
fuente
t&b
esFalse
por 10,5. De lo contrario, nuestras soluciones son convergentes. ;)i
es escalar o una lista. Entonces podríamos dejar caer altry ... except
monstruo.list
es siempre mayor que un int. Además, loslist
s se comparan en orden lexicográfico. Entonces, si comparamos[0]<i
esto, siempre devolveráFalse
ifi
es un número yTrue
ifi
es una lista (con un primer elemento distinto de cero).Java, 343
Menos golfizado:
fuente
i
unlong
para que no tenga que declararlo por separado. Unos cuantos más haciendoi++%b>0
en sus bucles en lugar de incrementarlo por separado (yi++<n%b
en el tercer bucle). Otro mediante el usob=b<2?(int)2e9:b
.Perl -
167165156sin golf
fuente
C - 193
Lo siento mucho. Tratar con el caso especial para 1 fue un poco malo, así que supongo que esto se podría jugar más con un mejor enfoque. Además, este código incluye una nueva línea al comienzo de la salida, por lo que si esto no está permitido, avíseme.
Por supuesto, las definiciones de aspecto muy feo siempre ayudan :)
El recuento de caracteres incluye solo espacios necesarios y nuevas líneas.
fuente
printf
conputs
, y su sustituciónreturn
con un operador ternario.puts
es que agrega una nueva línea cada vez :(. ¡Y para el operador ternario, no es posible agregarreturn
s ofor
s dentro de ellos! Su comentario me dio la idea de guardar algunos caracteres más fácilmente retirando elreturn
pesar de Gracias.!C # 271bytes
No es el más corto, no pude jugar golf a la lectura de entrada debido a que necesitaba aceptar 0 como entrada.
Código formateado:
fuente
Lua -
219203 bytesFui a hacer copias d de copias b de "|", luego agregué copias r de "|" al final. Siento que tal vez debería haber ido con el "conteo" las "|" s a la cadena de una en una.
sin golf:
Muestra:
fuente
JavaScript (193)
Esto puede ser demasiado complejo.
Versión comentada
fuente
Python -
127123122Solo a escondidas con una versión de Python un poco más corta.
editar: Se corrigió 0 sin imprimir nada y rejigger, terminó la misma longitud
fuente
C (207 caracteres)
La nueva línea anterior
exit
es solo para legibilidad.scanf
uso desvergonzado robado de Allbeert. Tenga en cuenta que esta solución no se compila con gcc ya que trata de aplicar un prototipo no existente paraexit
. Compila con un compilador de C comotcc
. Además, esta función puede o no funcionar en plataformas de 64 bits. Usar con cuidado.Aquí está la implementación original sin golf en la que se basa:
fuente
Python 2 ,
134126123114 bytesPruébalo en línea!
Antigua pregunta que conozco, pero es divertido intentarlo de todos modos. Posibilidad de probar algunos trucos que he aprendido desde que me uní.
fuente