Acabo de tener una conversación 'enérgica' con un compañero de trabajo sobre la brevedad de la siguiente declaración BÁSICA:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Es el título de este libro , y simplemente imprimir una secuencia de /
y \
personajes, alternando entre los dos al azar, lo que resulta en un patrón similar a esto:
(Imagen tomada de http://www.flickr.com/photos/rndmcnlly/5058442151/sizes/o/in/photostream/ )
Siendo proclividad de PHP, nos preguntamos cuál sería la forma más compacta de escribir lo mismo en PHP, y se nos ocurrió esto:
while(1) { echo chr(47 + 45 * rand(0,1)); }
chr(47)
es un /
personaje, y chr (92) es a \
. Por lo tanto, la declaración echo chr(47 + 45 * rand(0,1));
será aleatoriamente alternativa entre los dos, hasta la náusea.
En un idioma de su elección, escribir el programa más corto o función para emitir una secuencia aleatoria infinita de \
y /
caracteres, donde cada personaje tiene la misma probabilidad de ser elegidos.
{}
frenos, pero eso es lo más conciso posible.Respuestas:
El
goto
operador se agregó a PHP desde la versión 5.3.0 para que pueda usar el mismo método que usaría en BASIC:fuente
Como esto ha sido migrado a codegolf ...
PHP 30 bytes
El
Ð
es el personaje 208 y el£
personaje 163.Ejemplo de uso (en un cuadro de Windows):
Produce algo similar a:
Funciona mejor con una fuente monoespacial que es exactamente cuadrada (aquí he elegido la fuente estándar del sistema 8x8). Para volver a su color predeterminado, puede
color
volver a escribir sin ningún parámetro.fuente
rand()%2
(nadie dijo cuán pseudoaleatorio tenía que ser) - Tampoco funciona en terminales Unicode (como OSX)rand()%2
alternará entre cero y uno.mt_rand()%2
funcionaría, sin embargo.Mathematica 157 bytes
Al carecer de PETSCII, rodé mis propios "\" y "/".
No hay cigarro por brevedad aquí.
fuente
Brainfuck - 534
Mi prng (desde aquí ) es grande y extremadamente lento. Quizás un LFSR más simple o similar sería suficiente, pero esto funciona:
fuente
C, 39 caracteres (38 en MSVC)
Véalo correr.
En MSVC, podemos reemplazar
putchar()
con_putch()
y guardar un byte, pero no funciona en Ideone.fuente
Lisp común, 33
fuente
print
tiene un valor de retorno de 1, por lo que si usa eso, puede envolver toda la expresión enwhile
:while(print chr(47 + 45 * rand(0,1));
Probablemente también puedas jugar más al golf.
fuente
rubí,
2723 caracteres$><<
es 'imprimir en stdout'.fuente
"/\\"
con'\/'
. Ruby 1.8 requiere[rand(2),1]
producir el carácter en lugar del código ascii.C ++, 45 caracteres
No voy a ganar ningún premio por su brevedad, pero ya había escrito esto cuando escuché sobre el libro mencionado, así que simplemente lo jugué.
El truco putchar también funciona en C ++, bajando a 43, pero no puede evitar declarar el tipo de retorno en main.
fuente
Intento crear usando el estilo CSS, y es trabajo
este código php:
fuente
font-family: courier; line-height: 0.75em; letter-spacing: -0.25em;
El uso-0.25em
de espaciado entre letras parece coincidir mejor que-3px
, el que tiene artefactos debido a una inexactapt
apx
la conversión.Lisp común - 68
fuente
do
.05AB1E , 7 bytes
Pruébalo en línea!
fuente
Befunge-98 (PyFunge) , 7 bytes
Pruébalo en línea!
el
?
envía la IP hacia la izquierda o hacia la derecha, por lo tanto,/
o\
se empuja antes de imprimir con,
. Al ejecutar'/
o\'
en el orden incorrecto después de la impresión, simplemente hace cosas a la pila (se divide o intercambia), y luego empuja un carácter irrelevante antes de repetir.fuente
Befunge,
12987 bytesEditar: James Holderness descubrió una solución loca que usa tres comillas en su lugar.
Desborda la pila con un montón de caracteres en exceso para cada símbolo, pero ¿a quién le importa cuando puedes jugar ese 1 byte?
Versión antigua
(Tenga en cuenta el espacio final) El espacio finalaparentemente no es necesario (gracias Mistah Figgins)Pruébalo en línea
Esto comienza a llenar la pila, con un símbolo adicional por cada símbolo impreso.
fuente
#
está al final de una línea. No es un comportamiento consistente, pero el intérprete que está usando lo permite: tio.run/##S0pNK81LT/3/X0k/RsneTkf5/38A"
, pero mis intentos han sido inútiles. Debido a que necesita un/
lado"
, tendrá que dividir la mitad del tiempo.<
después#
para que funcione.'
lugar. Pruébalo en línea!?\","/"
Lo único malo es que desbordará la pila mucho más rápido, creo.No mucho mejor. Necesita php 5.5+ para la función de desreferenciación de matrices.
fuente
while(1)echo'/\\'[rand(0,1)];
.Python, 68
En la categoría "mi idioma apesta en esto", ¡tenemos Python!
Gracias a Ivo por algunos caracteres sobre importaciones y
choice
.fuente
> <> , 14 bytes
Esperaba poder restringirlo a un cuadrado de 3 * 3, pero no tuve éxito.
Puedes probarlo aquí .
fuente
Cubix , 12 bytes
Ver en el intérprete en línea!
Esto se asigna a la siguiente red de cubos:
Explicación
Preparar:
La IP comienza a dirigirse hacia el este en el primero
!
. Este es el comando 'omitir si es verdad', que es Falso cuando no hay nada en la pila, por lo que no se omiten comandos."/\"
ingresa stringmode y agrega estos dos códigos de caracteres a la pila.B!o
es principalmente un no-op aquí, solo invierte la pila.La IP ahora vuelve al primero
!
. Sin embargo, ahora hay enteros positivos en la pila, por lo que"
se omite el primero . Esto significa/
que ya no es un personaje, sino un espejo, que envía la IP del norte al bucle principal.Bucle principal:
los
D
comando es la única fuente de aleatoriedad en Cubix. Envía la IP en una dirección aleatoria. Al bloquear el sur y el este con flechas, nos aseguramos de que el IP tenga un 50% de probabilidad de dirigirse hacia el norte y un 50% de probabilidad de dirigirse hacia el oeste.Si se dirige al oeste, la pila se invierte. Si se dirige hacia el norte, se imprime el carácter superior.
Esto crea la secuencia aleatoria de barras, según se desee.
fuente
PHP,
2631 bytesochotres bytes más cortos que el tuyo (sin espacios en blanco o llaves),.dos bytes más cortos que la solución de primo (sin la etiqueta)
PHP 5.4.9 era la versión actual en diciembre de 1012, así que ...
requiere PHP 5.5 o posterior para la indexación de cadenas literales.Ejecutar
-r
o probarlo en línea .fuente
rand()&1
una compilación PHP para Windows. Te sorprenderías.SmileBASIC, 20 bytes
fuente
PowerShell ,
108908654533736 bytesPruébalo en línea!
fuente
for
también se hacewhile
un poco más cortoJava 8,
60595453 bytes-1 byte gracias a @BenjaminUrquhart al reemplazar
print
conwrite
, por lo que'/'
puede ser47
.Explicación:
Pruébelo en línea (agota el tiempo de espera después de 60 segundos).
fuente
c->{for(;;)System.out.print(Math.random()<.5?'/':92);}
( 54 bytes ) ¿O quiso decir que Java 7 es más largo que Java 8? En ese caso, estás en lo cierto.System.out.write
y reemplazando'/'
con47
JavaScript (Node.js) ,
595554 bytesRespuesta original
-4 bytes gracias a manatwork
-1 byte gracias a Conor O'Brien
fuente
while(1)process.stdout.write(Math.random()<.5?"/":"\\")
.for(;;)
lugar dewhile(1)
Supongo que puedes usar la recursividad.
Supongo que puedes usar la recursividad.
fuente
cortado un personaje:
luego quite las llaves:
otro truco, con la misma longitud:
fuente
rand()%2
dará como resultado una alternancia de0
sy1
s. No increíblemente al azar. Tendría que usarrand(0,1)
o en sumt_rand()%2
lugar.Perl
Este me parece divertido:
(Perdón por estar fuera de tema aquí. Sé que esto no es PHP)
fuente
Powershell, 37 bytes
desafortunadamente parece que no hay alias más cortos para Write-Host que no causen una nueva línea después de cada char.
fuente
Código de ensamblado x86 de 16 bits, 10 bytes
No recuerdo si este terminó en el libro.
fuente
Fisión , 12 bytes.
Pruébalo en línea!
fuente
Perl 6 , 23 bytes
loop
bucles para siempre.<\ />
es una lista de las cadenas\
y/
..pick
elige una de las dos cadenas al azar..print
imprime esa cadena aleatoria.fuente
xx*