Los cuadrados se ven simétricos, y también lo son los códigos requeridos.
Objetivo : escribir un programa cuyo código fuente sea un cuadrado sólido (N líneas con N caracteres imprimibles que no sean espacios en blanco en cada línea) e imprime un cuadrado de igual tamaño. Un programa (o salida) con ancho y alto inconsistentes no es válido. (por ejemplo, 6x5)
Ejemplo (HQ9 +)
QAA
AAA
AAA
Requisitos
- Tanto la fuente como la salida deben contener N líneas y N caracteres imprimibles en cada línea, seguidos de 1 salto de línea. Su programa no debe contener ni mostrar caracteres de control (excepto LF o CR-LF) o espacios en blanco (Espacio, Tabulador, VTab)
- Las lagunas estándar son aburridas, no las use.
- Un programa (y salida) con un solo carácter es básicamente nada. N debe ser al menos dos.
- El contenido de la salida no importa, siempre que cumpla con la regla 1
- Regla especial : no use comentarios o códigos que no afecten la salida para "llenar" su código.
Para ser claros, se le permite usar eni++;i++;... i++;
lugar dei+=10;
, pero no debe definir una variablestring s="placeholder"
pero nunca usarla más tarde. Es muy fácil evitar esta regla, así que no seas demasiado estricto. - Si desea generar una nueva línea antes que todo lo demás, está bien, pero declare que está utilizando esta regla.
Si desea generar la última línea sin un salto de línea posterior, también está bien y no necesita declararla. Sin embargo, eso no afecta la puntuación.
Adicional : Indique el número N (ancho / alto) que usa su programa. Proporcione descripciones de su código si es posible.
No es necesario indicar la longitud (en bytes) de su programa porque la N lo dice todo.
Como se trata de un juego de bolos de código , ganará el programa con la N más grande y la mayor complejidad.
Respuestas:
JavaScript (ES6), N = 5
Con una nueva línea inicial en lugar de una nueva línea final.
JavaScript (ES6), N = 6
JavaScript, N = 7
JavaScript, N = 202
fuente
N = 4
(no estoy seguro si la nueva línea al principio está permitida).Perl 5, 5 × 5
Esto está ligeramente ofuscado para hacerlo más interesante, así que aquí hay una explicación:
q.u.
es lo mismo que'u'
. El siguientex
es el operador de repetición , por lo que'u'
se repite$]
veces.$]
está entre 5 y 6 , por lo que'u'
se repite 5 veces. Luego agrega la nueva línea$/
yprint
todo. Todo esto se hace una vez para cada miembro de la listat..x
:t
yx
como palabras vacías se asignan los valores't'
y'x'
respectivamente, y la lista es así't','u','v','w','x'
. Entonces la salida es:fuente
Rubí, 3x3
Huellas dactilares
Pruébalo en línea!
Cómo funciona
p
es un método que imprime cada uno de sus argumentos, luego devuelve el valor (o una matriz de los valores) que imprimió. Si se llama sin argumento, no imprime nada y regresanil
. Así, lasp
s de las líneas 2 y 3 se evalúan todasnil
, y la primerap
imprime esasnil
s.fuente
Python 3 , 29 bytes
Pruébalo en línea!
Se pueden hacer 5x5. Huellas dactilares:
fuente
Carbón , n = 2
Solución aburrida (el carbón simplemente imprime ASCII literalmente):
Pruébalo en línea!
fuente
<?
/<?php
.C, N = 7
Imprime una cuadrícula de 7x7 de
%
, es decirfuente
brainfuck , 9x9
Pruébalo en línea!
Produce un cuadrado de
+
(la función más fundamental de brainfuck).Volveré cuando descubra cómo convertir esto en una quine, tan duras 3 semanas más o menos ...
fuente
Haskell,
7x76x6Salidas
Pruébalo en línea!
Cómo funciona:
Con los indicadores del compilador permitidos, hay una solución 5x5:
Haskell, 5x5 (con el indicador del compilador -cpp)
Pruébalo en línea!
-cpp
invoca el preprocesador cpp que permite el plegado de línea a través de\
.fuente
SOGL V0.12 , N =
32Pruébalo aquí!
La primera línea -
H$
significain the continuing lines replace $ with H
, resultando en la siguiente líneaHQ
. Eso luego se ejecuta:Encontré esto mediante la fuerza bruta a través de todos los programas en longitud 2 (ya que cualquier programa como
..\n..
siempre se reducirá a un programa de 2 caracteres)fuente
Pitón 2 , n = 6
Pruébalo en línea!
No tan golfizado como podría ser, pero ... tengo que llenar los vacíos de alguna manera, ¿no?
fuente
print
sí mismo tiene 6 bytes y 1 byte '\' es la compulsión más baja."print"
y luegoeval
, pero creo que irás demasiado lejos para caber en un5x5
...Rubí , n =
65Guardado 12 bytes gracias a m-chrzan
Pruébalo en línea!
Sí, tengo la intención de Leaky Nun esteEDITAR:: / las restricciones de fuente son peores de lo que pensaba para la mayoría de esolangs, y los idiomas normales tambiénfuente
puts
.> <> , N = 3
Se imprime
¡Pruébelo en línea o mírelo en el área de juegos para peces !
Esto es un poco complicado, así que tengan paciencia conmigo. El pez comienza en la esquina superior izquierda e inmediatamente entra en modo cadena. Empuja los códigos de caracteres de "v" y "n" a la pila, que son 118 y 110 respectivamente. El pez luego se envuelve y golpea
"
nuevamente, saliendo del modo de cuerda. Elv
envía entonces los peces hacia abajo, y la/
refleja a la izquierda en:
, lo que duplica la parte superior de la pila: la pila es ahora 118, 110, 110.El pez luego se envuelve y lo
^
envía en un bucle:Este bucle imprime la parte superior de la pila como un número (
n
), se ajusta y rebota, empujaa
= 10 = salto de línea a la pila, luego lo imprime como un carácter (o
) y comienza el bucle nuevamente. Cuando la pila está vacía,n
provoca un error y el programa se detiene.Se ha señalado en los comentarios que detenerse con un error es bastante insatisfactorio. Por lo tanto, te doy una alternativa que se detiene naturalmente, en un cuadrado de 4x4:
Se imprime
Pruébalo en línea!
fuente
something smells fishy...
no cuenta, ya que técnicamente se imprime cuando el programa falla (IIRC se imprime en STDOUT).V , 11 bytes
Pruébalo en línea!
Debería ser una solución válida de 5 bytes, pero desafortunadamente esa funcionalidad falta. :(
fuente
CJam, n = ∞
Versión raíz: n = 2
Pruébalo en línea
Huellas dactilares
Se puede extender a cualquier n anteponiendo números a cada línea. P.ej:
n = 11
Huellas dactilares
Pruébalo en línea
fuente
Protón , N = 5
Pruébalo en línea!
fuente
Ly , 11 bytes
Pruébalo en línea!
Una quine estándar en forma de cuadrado.
fuente
Perl 5 , 4x4
Pruébalo en línea!
Requiere
-M5.010
en la línea de comando.fuente
-M5.010
tiene el mismo efecto que una línea en el archivo que leeuse 5.010;
?use 5.010
o-M5.010
puede considerarse como gratuito, ya que se puede acceder a la mayoría de las características importadas mediante la ejecución de la secuencia de comandos a travésperl -E
de laperl -e
cual tiene la misma longitud.perlvar
todos modos) de lo contrario podría obtener un 3x3 con algo como esto ... ¡ Pero jugaré con esto hoy!cerebro , N = 6
Podría decirse que esto no es válido ya que elegí arbitrariamente el carácter de salida para que sea 3 puntos de código más bajo para arreglar el cuadrado ...
Pruébalo en línea!
fuente
Python 3 , N = 13 (181 bytes)
Pruébalo en línea!
No veo por qué esto no sería válido, ya que no hay una regla que me obligue a no usar esta técnica (creo). Esto imprime una cuadrícula de octothorpes 13x13.
fuente
Aceto , 3x3
Convierta el cero implícito en un flotante (
0.0
), duplicar, imprimir, nueva línea, duplicar, imprimir, nueva línea, imprimir, nueva línea.Versión anterior que puede no ser válida:
Aceto está hecho para este tipo de desafío; Todos los programas son cuadrados, al menos internamente. Puede o no ser válido, ya que en la salida la línea final no termina con un salto de línea. Simplemente calculamos 2 ^ 7, activamos el modo fijo e imprimimos tres veces con nuevas líneas intermedias.
fuente
Gaia , 3 x 3
Pruébalo en línea!
Explicación
Gaia, 2 x 2
No estoy seguro de si esto es válido ya que es una trampa engañosa (
Øg
lee el archivo fuente del programa).fuente
PHP, n = ∞
No sé si esto es un vacío legal, pero aquí está la
2
versión:Huellas dactilares
Pruébalo en línea!
Con n = 10
Pruébalo en línea!
Se puede extender a cualquier número.
fuente
Pitón 3 , n = 6
Pruébalo en línea!
Casi lo mismo que la respuesta de Python 2, solo con parens: /
Puedo hacerlo más diferente si alguien quiere: P
fuente
TI-BASIC, N = 2
Tenga en cuenta que
Disp
(incluido el espacio) yXmax
son cada uno de los personajes. Como Xmax es 10 por defecto, la salida es:fuente
WendyScript , 5x5
produce:
Pruébalo en línea!
fuente
Pitón 2 , n = 5
Pruébalo en línea!
Python 2 variante de la respuesta de Sísifo
fuente
Excel VBA, n = 15
Subrutina declarada que toma una variable de entrada vacía (para salida) y salidas a rango
[A1]
, a través de un cuadro de mensaje y a la ventana inmediata de VBE, y a través de la variable de entradaLos autoformatos anteriores para
y salidas
fuente
Encantamientos rúnicos , n = ∞ (mínimo 7x7)
Pruébalo en línea!
Aprovecha en gran medida la capacidad de Runic para manejar múltiples punteros de instrucción simultáneamente. ¿Qué se duplicó una quine? Por qué, una quine el doble de tiempo.
Todos los
.
comandos son cómo la expresión de quine básica"'<~S@|
se puede expandir para tener un ancho arbitrario. Copias adicionales de la quine expanden el cuadrado verticalmente. Las líneas nuevas y la salida son manejadas por la última línea, canalizando todas las IP de quine a una sola expresión de terminación, que sigueRak@
, que empuja un carácter de nueva línea, luego volca toda la pila de arriba hacia abajo para la salida. La última línea en sí también produce una línea de salida.@kaR<00
para mantener el tamaño de estructura requerido. Como la última línea sale primero, no hay una nueva línea inicial o final.Hay quines más cortos (a saber
'<~@|"
), sin embargo, la última línea está limitada a 7 caracteres, o no puede producir la salida del ancho correcto (@"<Rak
tiene 6 caracteres de longitud, pero solo genera 5 caracteres).También intenté codificar el cuadrado más pequeño posible. Esto fue lo mejor que pude hacer.
Encantamientos rúnicos , n = 6
Pruébalo en línea!
Clona repetidamente la parte superior de la pila, la imprime y cambia los dos elementos superiores para imprimir
100000
seis veces con 5 líneas nuevas entrelazadas.Y luego, porque pude:
Encantamientos rúnicos , n = 9
Pruébalo en línea!
Programa cuadrado de 9x9 que genera una línea cuadrada de 9x9 (con nueva línea inicial).
Esto se logra creando el quine de 9 bytes como una cadena y luego
E
valándolo 4 veces, luego multiplicando la cadena por 5 ("abc"*3
->"abcabcabc"
) y evaluando una vez más para las últimas 5 copias. Esto se hace de esta manera para llenar el cuadrado de 9x9 hasta el borde.fuente
Wolfram Language (Mathematica) , n = 5
Salidas
Suponga que no cuenta
>>
que sería más corto porque solo la función de impresión esPrint
yEcho
. También debe poner al menos 1 carácter después de la función para llamarlo.Pruébalo en línea!
Salidas
con una nueva línea al final
n = 7
Pruébalo en línea!
Salidas
con una nueva línea al final
fuente
Perl 5, 9x9
Explicación
El
for
bucle externo está sobre la secuencia1 .. ($= / 7)
. $ = es 60, por lo que el ciclo se ejecuta desde 1 hasta el piso de 60/7, que es 8.La primera instrucción en el bucle externo
$qq = ($q=$_)**7
, asigna a la variable$q
el valor del índice$_
del bucle y asigna$qq
el valor$q
a la séptima potencia.Luego viene el bucle interno, que está sobre la secuencia
$qq % 7 .. $q / 7
(%
es módulo).Por lo tanto, el bucle interno se ejecuta tres veces en total: dos veces cuando el índice del bucle externo es 7 y una vez cuando el índice del bucle externo es 8.
El bucle interno hace
map{...} 0..2
otro bucle, esta vez sobre la secuencia0 .. 2
, por lo que hace las siguientes tres veces:Los
qq
s son el operador de comillas dobles , por lo que esto solo imprimeqqq
yqqqqqq<newline>
.Por lo tanto, la salida es
Pruébalo en línea.
fuente