Supuse que un "arco" era la mejor manera de describir este patrón de números:
1234567887654321
1234567 7654321
123456 654321
12345 54321
1234 4321
123 321
12 21
1 1
Definida formalmente, cada línea consta de los números del 1 al 1 9-n
, los (n-1)*2
espacios y los números del 9-n
1 al 1 (donde n
está la línea actual).
Su tarea es escribir, utilizando el código más corto posible, un pequeño script / programa que imprima el patrón anterior sujeto a las siguientes restricciones:
- No puede codificar todo el patrón. Solo puede codificar una sola línea del patrón como máximo.
- Su programa debe imprimir una nueva línea (cualquier combinación de
\n
o\r
) al final de cada línea.
¡En sus marcas, listos, fuera!
code-golf
ascii-art
number
kolmogorov-complexity
Nathan Osman
fuente
fuente
123456787654321
ya que equivale a11111111^2
;-)11111111^2 == 123465787654321 != 1234567887654321
(aviso repetido8
)Respuestas:
Pitón 2,
65555351Acortado usando algunas de las ideas de ugoren .
fuente
s=s[1:]
por lazo ywhile s:
GolfScript (25 caracteres)
fuente
APL (18)
Explicación:
1↓⎕D
: la cadena de dígitos ("0123456789") menos su primer elemento↑∘(1↓⎕D)¨⌽⍳8
: seleccione los primeros [8..1] caracteres ('12345678', '1234567' ...)↑
: formato como matriz (rellenando los caracteres no utilizados con espacios en blanco)k,⌽k←
: almacenark
y mostrark
seguido por la duplicación vertical dek
fuente
Ruby:
6150 caracteresEjecución de muestra:
fuente
Befunge - 3 x 18 = 54
Sentí que tenía que hacer algo con befunge, ha pasado mucho tiempo desde la última vez que lo usé. Este problema se sintió más apropiado para el idioma.
Es terriblemente lento debido al ciclo de impresión que toma alrededor de 8 acciones por personaje (los estilos de conteo difieren).
fuente
JavaScript, 71
fuente
s="1234567887654321";for(i=10;--i;)console.log(s=s.split(i).join(" "))
para 70 personajes, @SteveWorleyC, 83 caracteres
fuente
Pitón 2,
7562No superará la respuesta de Volatility, pero aquí hay otro enfoque que utiliza cadenas mutables de python (
bytearray
):Editar
Encontré una versión más corta, usando
str.replace
:fuente
Perl, 41
-E
interruptor más Total de caracteres en la línea de comando: 50requiere al menos perl5, versión 10.
fuente
-E
es una adición de un byte al programa.Mathematica
92 85 67 5451Método n. ° 1 : (54 caracteres) Crea una matriz usando la fila n. °, n. ° col. Y la distancia desde el borde izquierdo-derecho.
Método # 2 : (67 caracteres) Alcanzar rangos de acortamiento.
Método # 3 : (85 caracteres) Llena selectivamente cada fila de una matriz.
Comience con la lista de 8 caracteres espaciales. Reemplace las posiciones 1 y 16 con "1"; reemplace "2" en las posiciones 2 y 15, etc.
Método 4 : (86 caracteres) Vacíe selectivamente cada fila de una matriz.
Método # 5 : Usando cadenas (92 caracteres)
fuente
()
y reemplazar#1
con#
:Grid@Array[If[#2<9,#2,17-#2]/.x_/;x+#>9:>" "&,{8,16}]
Array
veces puede hacer buenas tablas sin tener que agregar iteradores.PHP, 68
(Inspirado por la respuesta de HamZa)
for($n=8;$n;$r[]=$n--)echo str_replace($r," ","1234567887654321\n");
Se basa en el hecho de que str_replace de PHP puede aceptar una matriz para búsqueda y una cadena para reemplazar, reemplazará cada elemento de la matriz con la cadena dada. Después de cada iteración, el número actual se agrega a la matriz de búsqueda, eliminándolo del siguiente ciclo.
Ejemplo del código en acción: http://ideone.com/9wVr0X
fuente
<pre>
etiquetas. Cuando se interpreta como texto html, los espacios se contraen y las líneas nuevas se ignoran, pero si marca la fuente verá lo contrario.Marbelous 165
Pseudocódigo:
fuente
Python 2.x -
73656361 caracteresfuente
PHP, 76
fuente
K, 28
.
Puedes generalizarlo por 36:
{-1_a,'|:'a:(#*m)$'m:{-1_x}\,/$1+!x}
fuente
Javascript, 67 caracteres
Inspirado por la respuesta de steveworley (comentaría si pudiera):
Fragmento de código
La presencia de la última línea nueva sigue las reglas.
actualización: corte 2 caracteres eliminando paréntesis (precedencia del operador) y 1 eliminando un espacio innecesario
Parecía que me estaba molestando, porque no importa cuántas formas diferentes traté de acortar o simplificar al descodificar un segmento de código, la longitud se mantuvo igual hasta que dejé que se aplicara la regla "Creo que esto cuenta" que se escribe a continuación.
(Si la impresión cuenta como lo que vuelve cuando esto se ejecuta en la consola de Chrome)
fuente
Brainfuck: 542 bytes
fuente
Mathematica , 59
61 usando mis propias ideas:
O 59, tomando prestado de la respuesta de David:
fuente
R: 52
fuente
Haskell, 84
Un punto de partida para que alguien mejore:
La parte más probable sería
l++reverse l
liberar el punto, permitiéndonos deshacernos de lalet
declaración, pero podría encontrar que eraap
, lo que requiere importaciones.fuente
PostScript: 105 caracteres
El manejo de cadenas no es fácil en PS pero puede generar un código relativamente simple:
Una versión un poco más larga con 120 caracteres, pero puede generar diferentes arcos de números reemplazando el 8 al comienzo de la segunda línea con cualquier número en el rango de 1 a 9:
fuente
GoRuby 2.1
36 caracteres
Sin golf
fuente
K 20
fuente
TSQL, 148
Editar: hasta 148 con la sugerencia de manatwork y ajustar a ORDER BY.
Legible:
Golfizado:
Salida:
fuente
1
en lugar de cuerdas'1'
donde inmediatamentecast
envarchar
. Esto me da 149 caracteres:with t as(select 1n,cast(1as varchar(max))o union all select n+1,o+char(n+49)from t where n<8)select o+space(16-2*n)+reverse(o)from t order by o desc
.Haskell, 79
Esto funciona reemplazando los caracteres> n con
' '
, donde los caracteres n provienen de "87654321" (que resulta ser la cola de la cadena para realizar la sustitución).fuente
PHP: 61 caracteres (o 60 caracteres si reemplaza el \ n por una nueva línea ASCII real)
(Inspirado por la respuesta de GigaWatt y HamZa)
http://ideone.com/FV1NXu
fuente
PowerShell: 38
Código de golf
Tutorial
8..1|%{
...}
canalizar enteros de 8 a 1 en un bucle ForEach-Object.-join(
...)
une la salida del código anidado en una sola cadena sin delimitadores.1..$_
emite enteros ascendentes de 1 al entero actual en el bucle.+" "*(8-$_)
agrega un doble espacio, multiplicado por la diferencia entre 8 y el entero actual, a la salida.+$_..1
agrega enteros, descendiendo del entero actual a 1, a la salida.fuente
Javascript con lambdas, 147
Se puede verificar en Firefox.
fuente
CJam, 22 caracteres
No es una respuesta válida (ya que el lenguaje se desarrolló después de la pregunta), y tampoco la más corta, pero aquí va:
Pruébalo en línea aquí
fuente
Lua, 62
fuente