Desafío
Dibuja el logo de los Juegos Olímpicos ...
... como personaje (por ejemplo, ASCII) art!
Salida de muestra
* * * * * * * * *
* * * * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * *
* * * *
* * * * * *
Tu arte no tiene que parecerse exactamente al mío, pero tiene que representar los anillos olímpicos lo suficientemente bien como para que sea reconocible.
Reglas
- El programa debe escribir el arte en la consola.
- El código más corto (en bytes, cualquier idioma) gana.
- Una solución que imprime anillos en sus respectivos colores (o una representación cercana) recibirá una bonificación de menos veinte puntos.
El ganador será elegido de febrero 23 de rd al final de los Juegos Olímpicos de Invierno 2014.
Ganadores
- Oro : marinus - APL, 62 puntos
- Plata : Ayiko - Perl 6, 75 puntos
Bronce : evuez - Python, 107 puntos
Elección popular : Danko Durbić - Commodore 64 BASIC
Respuestas:
APL (82) (-20 = 62)
Editar: para variar, este programa es lo suficientemente simple como para que TryAPL lo toque, por lo que puede ejecutarlo allí (solo pegue la línea).
No estoy seguro si puedo reclamar el bit 'color', aunque los estoy representando a todos de manera diferente.
La consola APL no admite el color, por lo que utilicé caracteres de bloque sombreados (asignar cualquier tipo de otro arte ASCII sería tan simple como reemplazar los caracteres al comienzo de la cadena).
Deben verse como círculos ininterrumpidos (dependiendo de su fuente).
O:
fuente
Commodore 64 BÁSICO
Escritura directa en la pantalla y memoria de color.
Salida:
Así es como haces esto con los sprites.
fuente
HTML Fiddle -
48,35, 33 caracteres (¡Gracias @Dom y @cnst!)Salida:
fuente
OOO<div style="margin:-10px 5px">OO
lugar ... (creo que debe ser un bloque, de ahí el<div/>
)div
, solo puede usarp
en su lugar!BASH en color - 271 - 20 = 251 - Con anillos enredados; P
Resultado:
Y por diversión : 61 - 20 = 41.
Versión LZ77:
fuente
bash: !/\\e[3}": event not found
:(x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- (Soy un poco malvado con los 5 aquí.) O incluso esto podría ser mejor, con una superposición en mente:x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- aunque podría parecer más desordenado que los otros.Sinclair BASIC en el ZX Spectrum 48K (261 bytes)
Listado BÁSICO:
Resultado final:
Programa en ejecución y medición de código:
Listado BÁSICO en formato de texto:
Archivo TAP con el programa, adecuado para emuladores o máquinas reales que usan DivIDE o DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap
fuente
Así que en realidad no leí correctamente, es arte ASCII, así que supongo que esto no es válido. ¡Uy!
HTML 121 (141-20)
En cromo:
PHP 103 (123-20)
fuente
#06f
, amarillo:#fa0
verde:#193
Rubí: 198 caracteres - 20 = 178
(Tenga en cuenta que
^[
son caracteres individuales).Ejecución de muestra:
fuente
Mathematica - 185
Aquí está la salida
Otra versión, basada en rasterización de gráficos vectoriales
fuente
PostScript, 203 (-20 = 183)
Mantengo que esto cuenta como "arte ASCII", aunque no escribe en la consola. Salida:
Esto podría jugarse un poco más.
fuente
Script de comandos de Windows: 112
por ciento debytesY, por supuesto, la versión obligatoria de trucos - 4 bytes
guardado como:
fuente
Otro intento en Perl,
130120Gracias a manatwork por ayudar con esto
Salida:
fuente
for
lugar deforeach
; 2 caracteres eliminando(
... argumentos de)
roundsprintf()
; 2 caracteres eliminandohex
el parámetro de; 1 personaje usando eny///
lugar detr///
; 1 personaje eliminando la final;
.y///
antes. Iré a buscarlo ahora.Python:
157140138133122107 caracteres107
(gracias a manatwork )
salida de muestra:
157
122
(Acabo de comenzar este, intentaré mejorarlo)
con mejor salida: 120 caracteres
salida de muestra:
fuente
print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()])
. Con respecto a la versión de "mejor salida", allí puede ahorrarrjust()
el segundo parámetro. (E insertar una “t” en el encabezamiento de este post.)bin()
. Pero, ¿por qué lo usas a tustr()
alrededor?bin()
El valor de retorno ya estástr
.010000010100000101000101000001010000010
? Los dos anillos inferiores me parecen un poco rotos.Perl,
177163Una versión mejorada gracias a Dom Hastings:
Salida:
fuente
"\n"
como$r
, puede usar los$/
valores predeterminados"\n"
, las nuevas líneas literales incluso podrían ahorrarle más en un par de lugares. También puede guardar 1 char más usando en$s=$"x3
lugar de$s=" "
. ¡Espero que ayude!C, 257 bytes
Esto podría haberse jugado un poco más.
Esto debe ejecutarse en un Tektronix 4010 (o un emulador como xterm -t). Salida:
Este es de hecho un arte ASCII, ya que todos son '.' caracteres. Y hace salir a la consola, según lo solicitado. Algunos emuladores de Tektronix admiten color. El mío no, así que no pude hacer eso.
fuente
Java,
181179161156 bytes(No se compilará en jdk 1.7, requiere 1.6 o inferior)
La salida:
Definitivamente no es un ganador, pero vamos, es Java .
fuente
replaceAll()
's expresión regular y poner de nuevo toda la parte coincidente:replaceAll(".{29}","$0\n")
. (Puede haber un salto de línea extra al final de su archivo, mientras cuento sólo 181 caracteres en el código publicado.)import
y coloque el nombre del paquete directamente en la llamada del constructor. Eso reduce el tamaño a 161 caracteres.class M{static{...
aenum M{M;{...
. El siguiente gran paso es deshacerse de BigInteger, ¿es eso posible? Estoy tratando de hacer algo de magia con String.format pero todavía no tengo resultados.Haskell, 200
Salida:
golf fuera de:
fuente
map.map
porque suena gracioso. : DRubí, 9
#sátira
Las reglas permiten el arte que no se ve exactamente como el ejemplo, pero debe "representar los anillos olímpicos lo suficientemente bien como para que sea reconocible" .
Puede reconocer esta representación del logotipo de los Juegos Olímpicos.
fuente
Javascript - 170
185189CaracteresSalida:
2do Javascript - 25 caracteres
Salida:
El segundo es vago
fuente
split()
parámetro; 2 caracteres eliminando los últimos 2;
s.'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))})
.¡Binario! (265 CHARS)
Es demasiado grande para ganar, ¡pero al menos se ve genial!
fuente
PHP - 99 (-20?)
Eso es definitivamente reconocible. Yo digo que mis "colores" cuentan; Es una representación cercana.
Si no te gusta, entonces aquí está
GolfScript - 101 (-20?)
fuente
header("Content-Type: text/plain")
, el valor predeterminado para los servidores web es text / htmlBash + ImageMagick: 163 caracteres
Salida de muestra:
fuente
Perl 6:
1127756 caracteres, 75 bytes.comb
da una lista de los caracteres separados en una cadena (sin argumento de todos modos).ord
da el número de código del personaje del personaje.base(2)
devuelve una cadena con codificación de base 2 de ese Int.trans
reemplaza los dígitos con espacio y @ para una mejor visibilidadflip
invierte los caracteres de una cadena para que los 0 iniciales que faltan no estropeen el dibujo.edit2: solución más nueva que usa palabras qwote y codificación base 36
<ABC DEF GHI>
es una sintaxis de comillas en perl6, por lo que obtienes una lista de cadenas:36($_)
crea un Int a partir de una cadena codificada en base 36$_
(for
variable predeterminada del bucle)editar: la solución anterior tiene un dibujo más bonito (copiado) pero es más largo:
fuente
Mathematica
18517510 bytes guardados por mathe.
Los anillos a continuación son ASCII 'O's.
La letra "O", ligeramente translúcida, en Century Gothic, impresa 5 veces en tamaño de letra = 145 puntos de impresora.
Esto no es arte terminal. Sin embargo, satisface completamente la definición de Wikipedia del arte Ascii: http://en.wikipedia.org/wiki/ASCII_art .
fuente
FontSize ->
se puede quitar.FontSize -> 145
por145
.JavaScript: 153 caracteres
Quería ver si podía hacerlo más rápido usando álgebra para representar gráficamente los círculos:
(
c
es una matriz de cinco (x, y) pares, los centros de los círculos, aplanados para guardar diez caracteres).salida:
159 caracteres es un poco más legible:
salida:
En 167 caracteres tenemos "colores":
salida:
Y con 189 caracteres , también puedo hacer que el radio sea
r
ajustable:http://jsfiddle.net/mblase75/5Q6BX/
fuente
APL, 8 caracteres / bytes *
Aquí hay una respuesta que impulsa el recuento de char más bajo (después de todo, esto es código golf)
Salida:
El símbolo es ○, operador de círculo APL. Puede poner una 'O' en su lugar, en caso de que desee una salida estrictamente ASCII. Simplemente pensé que era apropiado usar un símbolo APL.
Solo por diversión, aquí hay una versión en color (37 caracteres - 20 = 17 puntos)
Salida: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ *: APL se puede escribir en su propio juego de
caracteres de un solo byte (heredado) que asigna símbolos APL a los valores superiores de 128 bytes. Por lo tanto, para fines de puntuación, un programa de N caracteres que solo usa caracteres ASCII y símbolos APL puede considerarse que tiene una longitud de N bytes.
fuente
CSS,
1176922855771 bytes, -20 bonificación de color = 751Solo CSS, no se necesita marcado. Ver violín sin marcas aquí: http://jsfiddle.net/XcBMV/12/
En color, y con la superposición correcta.
fuente
Perl - 12 caracteres
OK, entonces no es una representación especialmente artística. ;-)
Un poco más lindo:
fuente
Ensamblador GAS Cargador OL de BIOS de 16 bits - 617 - 20 = 597
Me estoy volviendo loco aquí, tan solo por el gusto de hacerlo.
No carga mucho, pero carga el logotipo de los Juegos Olímpicos como ASCII con colores;)
Código:
(Linux) Construir y extraer imagen MBR
Corriendo en emulador
(Todavía no lo he probado en la computadora de mi casa ...)
Resultado
fuente
TI-Basic (16 bytes)
Nota: TI-Basic está tokenizado. Si no recuerdo mal,
ClrHome
yDisp
son tokens de un byte.fuente
fuente