El desafío es generar una regla de recuento de caracteres ASCII en el siguiente formato:
+-------------------------------------------------------------------------+
|| | | | | | | | | | | | | | | |
|0 10 20 30 40 50 60 70 |
| |
+-------------------------------------------------------------------------+
La longitud de la regla debe ser escalable a cualquier múltiplo de 10.
Reglas:
- La regla debe ser horizontal.
- Digamos, para simplificar las cosas, que la regla debe funcionar hasta la marca 1000, todos los números alineados a la izquierda, un espacio después del número final .
- Pedir una regla con longitud cero debería imprimir NaR
- Los números negativos deben imprimir una regla invertida (-90, -80, -70, ...) con números alineados a la derecha, exactamente en el mismo formato que el anterior, de lo contrario
Y, solo imprimir en la consola está bien
Listo, listo, golf!
Respuestas:
Python - 227
232Admite especificaciones completas
editar: expresión del generador mejorada.
La compatibilidad con números negativos alineados a la derecha agrega una sorprendente cantidad de código.
Resultados de muestra:
-30 30
-30 -30
100 150
-1000 -950
fuente
No voy a vencer a los lenguajes dinámicos hoy, pero de todos modos ...
Haskell, 341
Me tomé la libertad de intercambiar los caracteres ASCII reales con caracteres de dibujo de caja Unicode más atractivos.
fuente
Python 2.7,
342 266260 caracteresdevuelve una
tupla de cadacadena delínea, que luego puede imprimir o guardar en un archivo (prefiero el último para longitudes superiores a 70 porque la consola solo hará que se vea desordenada con el ajuste)Se supone
y
que esuna cadena (raw_input () n python o sys.argv [1] si desea invocar a través de cmd)un número entero (por ejemplo, con input () en 2.xo int (input ()) en 3.x )Hice de esto una función para ser más flexible
editar: reducido a 266 caracteres. ya no devuelve una tupla, sino una cadena. Ahora toma un entero en lugar de una cadena como argumento
edit2: reducido a 260 caracteres, función de línea única
nota: maneja números negativos, pero no justifica correctamente (realmente no creo que la justificación sea demasiado importante de todos modos
fuente
PowerShell ,
256253233225222 bytesPruébalo en línea!
Menos golfizado:
fuente
Python,
291241 caracteresUn enfoque bastante simple. Estoy seguro de que se puede mejorar bastante.
Traté de seguir las pautas en los comentarios, pero no apoyo los números negativos (espero que sea una broma).
Este es un programa, imprime la regla a la salida estándar. Si su pantalla es lo suficientemente ancha, debería admitir reglas bastante largas.
fuente
C ++, 392
Esto se programa utilizando la consola de Windows, por lo tanto, solo elegí un tamaño de regla máximo de 70, simplemente se bloqueará por algo más grande. Los números negativos (hasta -70) y 0 se manejan correctamente.
fuente
Python - 208
(no admite números negativos alineados a la derecha)
Creo que mi truco favorito era generar cadenas que son mucho más largas de lo necesario y luego truncarlas, por ejemplo:
Solo desearía que hubiera una opción de formato de cadena más concisa para la alineación a la izquierda (a menos que haya una que simplemente no conozca)
fuente
Perl 5.14,
198224 caracteresProbablemente se puede acortar mucho más, pero aquí hay un
primersegundo intento (con saltos de línea insertados para facilitar la lectura):EDITAR: Editado para morir con "NaR" cuando la entrada es
0
y para admitir el rango negativo.EDIT2: No he tenido la oportunidad de trabajar más en esto, y solo ahora noté la regla alineada a la derecha para números negativos, que mi código no admite, por lo que creo que otra solución debería marcarse como la respuesta si el Se ha alcanzado la fecha límite.
fuente