Cuando llegue el 1 de noviembre, se graduará Programming Puzzles y Code Golf, por lo que en los próximos 11 meses, querremos guardar algunos recuerdos de cuando no estábamos graduados.
Escriba un programa que produzca el favicon PPCG, que se ve a continuación.
- La imagen debe tener al menos 64x64 píxeles.
- El azul debe ser del color # 62B0DF. El fondo puede ser blanco o gris claro.
- La imagen no necesita ser pixelada como está aquí.
- Alternativamente, cree texto (con dimensiones de al menos 64x64 caracteres que no sean espacios en blanco) utilizando códigos de color ANSI brillante estándar de Cian y Blanco.
- Las imágenes integradas y la importación del logotipo PPCG no están permitidas.
Este es el código de golf, por lo que se aplican reglas estándar. El código más corto en bytes gana.
Respuestas:
Bash (OSX),
33272318 BytesEscuchaste al hombre, como nos gusta.
Soy consciente de que este es un concurso de popularidad. Pero oye, cuando puedes codificar golf, ¿por qué no?Ahora es un código de golf. \ o / Esto era válido al momento de la publicación.
¡Incluso hubo una excepción para mí en algún momento! Pero, como @AlexA. señaló ...
Estoy de acuerdo con esto y, como tal, no deseo que se elija como respuesta. Eso no significa que todavía no intentaré jugar más golf. ;)
¡Gracias a @ ΚριτικσιΛίθος por reducir 6 bytes con una URL corta y elegante!
¡Gracias a @ ev3commander por reducir OTROS 5 bytes con una URL aún más elegante y corta!
¡Gracias a @kennytm por señalar que puedo reducir el tamaño del protocolo y eliminar las comillas, ahorrándome otros 4 bytes!
fuente
http://goo.gl/gviJDX
open http:goo.gl/gviJDX
http:yon.se/q
BitShift , 2795 bytes
Esto salidas
Este es probablemente el código más corto con el que aún puedes reconocer el logotipo ... Creé un lenguaje terrible :(
Pruébalo aquí
Nota
Esto se envió antes de que se modificaran las reglas; según las reglas actuales, esta respuesta no es válida. Lo dejaré aquí para inspirar a la gente.
fuente
JavaScript
Nota: Esta respuesta se realizó antes de que las reglas cambiaran significativamente, por lo que esta respuesta no compite.
Esto se imprime en la consola de su navegador, a través de un procesamiento de cadenas loco e impresionante.
He hecho una versión más corta de esto, pero parece que no puedo encontrarlo en ningún lado.
Chrome / Firefox
Esta versión se duplica en cada píxel para que se vea más proporcional
Safari
El
long_string_here
es un ppm , escribí este script hace un tiempo para imprimir una imagen arbitraria en la consola .¿Como funciona esto? Bueno, JavaScript tiene una función en
console.log
que puede proporcionar CSS para diseñar el mensaje.I el carácter unicode
█
y el color que el color correcto, que se recupera de las ppm.Para mostrar cualquier otra imagen ejecutada:,
convert my_img.png -resize 50x50 -trim -compress none -blur 1x2 -flatten -background white ppm:-
luego copie la salida a<long_string_here>
Código completo
Debido a que esto es bastante masivo, he puesto el código completo en pastebins para que pueda ejecutarlos
Chrome / Firefox: pastebin
Safari: pastebin
Resultado
Resultado de Firefox
Resultado Safari
fuente
Rubí con zapatos
Salida de muestra:
fuente
Javascript (ES2015), 199 bytes
(+72 bytes de CSS)
Mi código imprime el logotipo en el
<body>
elemento de una página a través de algunas secuencias Unicode. Las sugerencias para mejorar el código son bienvenidas (especialmente para la0
tarea -pads)Javascript (nuevas líneas insertadas para facilitar la lectura)
CSS
Resultado
No golfista y explicado
Si consideramos el ícono original de PCG de 16x16 publicado originalmente, podríamos codificar la información en formato binario.
Por ejemplo, la primera línea se codificaría como
1100 0000 0000 0011
donde se[0, 1]
asigna[blue, white]
. Cada número binario se puede almacenar fácilmente en formato decimal, así1100 0000 0000 0011
es49155
. La matrizcontiene toda la información (en formato decimal) sobre cada color de píxel. Cada elemento de la matriz representa una línea para dibujar. Tenga en cuenta que algunas líneas son
0
( líneas completamente azules) o su longitud es menor que los16
dígitos (una línea que comienza con un píxel azul): entonces necesitamos rellenar con la derecha estos números binariosLa
map
función agrega 15 ceros a la izquierda más el número binario concatenado. Por lo tanto, el resultado se divide en16
píxeles a la izquierda. Ahora la matriz es en realidadEche un vistazo más de cerca a los dígitos anteriores: casi podemos ver el logotipo de PCG. :)
Tenga en cuenta que si almacenamos esta información en la matriz, necesitamos usar 16x18 bytes (288 bytes). Este enfoque requiere en cambio 135 bytes
El siguiente paso es dibujar cada línea. El constructo
bucle sobre la matriz
values
(función ES6) y agregamos al cuerpodonde
[...l
] representa la cadena binaria como una matriz. Por ejemplo, la primera línea se leería comoluego nuevamente usamos
map()
para transformar cada valor:si el valor es
0
entonces se convierteLEFT SEVEN EIGHTHS BLOCK (U+2589)
en un espacio, de lo contrario es un espacioEM SPACE (U+2003)
. En resumen, esta tareaconvierte cada
0
o1
bien en un bloque cuadrado o en un espacio: luego la matriz se une y, junto con una secuencia de nueva línea final, se agrega al cuerpo.El CSS que he usado corrige el
line-height
y elletter-spacing
(lo he probado en Chrome, por lo que el resultado puede variar ligeramente en otros navegadores)fuente
Brainfuck, 120148 bytes
Esta respuesta ahora no es competitiva. Esto fue antes de que se cambiaran las reglas, y esto no tiene absolutamente ninguna esperanza de ganar como código golf.
Código Brainfuck para generar el valor hexadecimal de la imagen. Muy, muy, muy largo.
Aquí hay un enlace pastebin, y las primeras dos líneas. https://paste.ee/p/LtcCy
fuente
Snap , 16 bloques
Dime si esto no es válido.
fuente
Javascript ES6, 461 bytes
Necesito trabajar más en la compresión.
fuente
Chicle , 175 bytes
¡Uno de los raros momentos en que Bubblegum es útil para la salida gráfica !
Ejecute en una terminal que admita códigos de escape ANSI.
Invierta el hexdump con
xxd -r
Aquí hay una captura de pantalla de salida:
Nota: en mi máquina con Windows con el terminal MinGW, el binario de Windows Python no genera códigos ANSI correctamente, por lo que lo anterior era
python <esolangs reference implementation>.py <infile> | cat
pero debería funcionar correctamente en máquinas Linux.fuente
Javascript (ES6), 192 bytes
Esto toma una versión comprimida de una ruta SVG D. Los espacios se eliminan, por lo que todos los argumentos deben ser un solo decimal, por lo que cualquier número se multiplica por 20 antes de escribirse en el svg real.
Salida: Demo: https://jsfiddle.net/Luy6qj80/
fuente
LibreLogo ,
122116115 bytesCódigo:
Resultado:
Explicación:
Intentos previos:
116 bytes:
122 bytes:
fuente
JavaScript, 680 bytes
Bueno, ya tenía esto terminado para el concurso original, cuyas reglas cambiaron drásticamente. Este definitivamente no es el código más corto que se te ocurra. Fue diseñado para el concurso de popularidad y crea el favicon original píxel por píxel. Tiene algunas características más, también. :)
Puede llamar a la función con hasta tres parámetros:
m
se vuelve meta y cambia el color en consecuencia. Y si lo encuentra demasiado pequeño, úselo para aumentar su tamañob
de 16x16px a 64x64px . Finalmentea
anima el logotipo, como si estuviera grabado en un tablero azul. El valor es la velocidad de cada paso de animación.Sin golf
Salida
Defecto
Animado
fuente
Python 3, 10,069 bytes
Escribe el hexadecimal del logotipo original en un nuevo archivo.
fuente
R, 189 bytes
Con sangría para mayor claridad:
Estoy robando descaradamente el método de una vieja respuesta mía : tomo la representación de base 2 de 16 números, la convierto en una matriz de 16x16 de 1s y 0s y la trazo como está.
fuente
Google Blockly , 140 bloques
Produce
Agregará una explicación si se solicita. Intentalo aquí
¡Las sugerencias para reducir la función masiva de la izquierda son bienvenidas!
fuente
Python 2, 211 bytes
fuente
05AB1E , 49 bytes
Pruébalo en línea!
fuente
Excel VBA,
252246245237 BytesGuardado 6 bytes gracias a Taylor Scott.
Ahorró otros 8 bytes gracias a la inspiración de Taylor Scott
El código debe ejecutarse desde la página de códigos de una hoja de trabajo y agregará la forma a esa hoja de trabajo. No es nada sofisticado, pero utiliza directamente la llamada rectangular redondeada en la que se basa el icono. (Para
AddShape
,106
corresponde amsoShapeRoundedRectangularCallout
.)El formateo no agrega mucho pero hace que sea más fácil de leer:
También hay una solución de una línea destinada a ejecutarse en la ventana inmediata que es 1 byte más:
fuente
()
enp()
y convertirWith ActiveSheet. ...
aWith[Sheet1]. ...
Sheet1
embargo, no estoy seguro de suponer que se nombra la primera hoja . Supongo que podemos suponer que el usuario ejecuta el código en un nuevo archivo.Sheet1
objeto predeterminado probablemente debería ser una norma aceptada siempre que mencione que es parte de la condición de entrada / salida como parte de su soluciónSheet1
objeto - lo que puede caer un byte mediante la sustituciónWith[Sheet1].
conWith Sheet1.
Sheet1
es solo el nombre de código predeterminado de la primera hoja. Esa es una buena reducción del 0,4% en bytes.MATLAB,
153 150140 bytesEl código toma una matriz de números de 16 bits (lamentablemente no hay forma de codificarlos que reduzca el recuento de bytes aparte de la lectura de un archivo binario guardado). EDITAR: con un poco de creatividad en cómo se hace la matriz, he guardado 3 bytes, y con un poco más y una variable adicional, puedo guardar otros 10 además de eso.
Con esta matriz, se convierte en una cadena binaria donde un ascii '1' representa azul y un ascii '0' es blanco. La matriz es 2D en este punto porque cada uno de los 16 números se convierte en una cadena de 16 caracteres.
Resto 47 para convertir esto en una matriz de 1 y 2 (necesaria para el siguiente bit), donde cada elemento representa un píxel. Nuevamente, esto permanece como 2D y son nuestros datos de imagen.
Luego, la imagen se amplía por un factor de 8 usando el vecino más cercano para producir una imagen que tenga al menos el tamaño mínimo requerido de 64x64px; de hecho, es 128x128 porque de alguna manera dividí 64 por 16 para obtener 8> _ <(no ¡pedir!).
Finalmente, esto se muestra usando un mapa de color donde 1 se vuelve blanco y 2 se convierte en el tono azul requerido # 62B0DF.
Esta es la salida:
fuente
Procesamiento, 211 bytes
Almacenar los píxeles dentro de enteros con signo (parece ser la forma más eficiente, tal vez intente 2 ^ 64 enteros) y luego imprimirlos en un marco.
fuente
Swift (área de juegos), 599 bytes
Decidí intentarlo, ya que dibujar en Swift es bastante sencillo, y generalmente no se juega así. Terminé perdiendo bytes preciosos con el texto ... ¡Maldita sea
NSDescriptiveVariableNames
!Así es como se ve en el patio de recreo:
Creo que podría jugar más alias aliando cosas como
CGRectMake
, agrupando objetos en una función, etc.fuente
PHP, 145 bytes, no compite
Debería usar no blanco y colores en su lugar, pero estoy demasiado cansado.
Supongo que agregará aproximadamente 10 bytes al conteo, tal vez más.
fuente
Excel VBA, 178 bytes
Función de ventana Inmediata VBE anónima que no toma entrada y emite el Favicon PCG (exactamente como en el indicador anterior) al rango
fuente
C (gcc) , 188 bytes
Pruébalo en línea!
Utiliza códigos de escape ANSI para imprimir 128 espacios de color horizontales y 64 verticales.
(Imagen redimensionada)
fuente
C ++ con SFML , 607 bytes
Código que llama a la función:
Requisitos:
Debe tener un archivo ttf válido llamado
a.ttf
en el directorio actual donde se ejecuta el ejecutable, para que pueda cargar las fuentes para mostrar el textoDebe tener las DLL SFML correspondientes en el directorio actual donde se ejecuta el ejecutable
Resultado:
Explicaciones:
fuente
tcl / tk, 113
Tcl / tk, 144
fuente