Hay una gran cantidad de preguntas que involucran dibujar formas usando asteriscos, así que pensé que con tantos asteriscos por ahí, deberíamos dibujar uno, usando la tabla ASCII.
Reto
Su tarea es escribir un programa o función que no tome entrada, y envíe este texto exacto:
!
"#
$%
&'
()
*+
,-
./
01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
\]^_
`a bc
de fg
hi jk
lm no
pq rs
tu vw
xy z{
|} ~
Como referencia, este sitio enumera la tabla ASCII completa.
Reglas
- El resultado debe ser el texto exacto, como se muestra arriba. Se permite el espacio en blanco inicial / final.
- Se aplican lagunas de golf estándar: no leer este ASCIIrisk de Internet, etc.
- Este es el código de golf , por lo que gana la solución más corta (en bytes).
code-golf
string
ascii-art
kolmogorov-complexity
FlipTack
fuente
fuente
Respuestas:
05AB1E ,
4038373635 bytesPruébalo en línea!
Explicación
fuente
žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C»
, Tengo 39, pero creo que puedes afeitarte un poco con ZIP.Python 3 , 110 bytes
Genera la plantilla.
con
%c
forx
, luego usa la interpolación de cadenasrange(32,128)
para insertar los valores ASCII en el patrón.Pruébalo en línea!
Python 2 es un byte más largo, con un desempaquetado de tuplas más largo pero más corto
print
.fuente
V ,
54, 50 bytesPruébalo en línea!
A diferencia de lo habitual, este programa no contiene caracteres no imprimibles.
Explicación:
Ahora el búfer se ve así:
Ahora construimos el medio:
Aquí es donde se pone un poco raro.
Aquí hay una nota importante. El
>
comando es en realidad un operador , lo que significa que no hace nada sin un argumento, el texto para operar. Por ejemplo,Pero dado que este comando está en un bucle, podemos guardar un carácter al no proporcionar un operador. Al final de un ciclo, si algún operador está pendiente, completará
_
(la línea actual) como argumento implícitamente.Ahora admito que este bucle es un poco extraño, y puede ser difícil hacer un seguimiento de cómo debería verse todo el texto en un momento dado. Entonces puede usar este programa más simple para ver cómo se verá después de N bucles.
Si lo configura en 9, puede ver que tenemos un poco de texto adicional para eliminar. (Solo la línea actual).
Entonces eliminamos la línea actual con
dd
. ¡Pero espera! ¿Sabes cómo dije que los operadores tienen que tomar un argumento que a veces se rellena implícitamente? Los argumentos también se completan implícitamente al final del programa. Entonces, en lugar dedd
od_
(que son equivalentes), simplemente podemosd
y dejar que V complete el_
para nosotros.fuente
ÿ
:)Python 3
170165155147 bytesHe jugado tanto al golf, he olvidado cómo funciona ...
Pruébalo en línea!
fuente
JavaScript (ES6),
156...115114 bytesLamentablemente, el infame
String.fromCharCode()
cuesta 19 bytes.Formateado y comentado
fuente
String.fromCharCode(...[...Array(n)].map(_=>k++))
para ahorrar 4 bytes.String.fromCharCode()
a una matriz, pero opté por otro enfoque. ¡Gracias de cualquier manera!QBIC ,
153151 bytesRealmente es solo una serie de bucles FOR y lanzar un int a un personaje (
chr$()
).Salida de muestra:
fuente
Perl , 113 bytes
112 bytes de código +
-l
bandera.Pruébalo en línea!
fuente
PHP,
1101051039391 bytesimprime una nueva línea principal. Ejecutar
-nr
o probarlo en línea .El principio básico se adoptó de Arnauld, pero esto se repite.
Y se aprovecha de los tipos de letra implícitos de PHP:
NULL a int para el índice de cadena, float a int for
%
, boolean a int for&
y for+=
.explicación con pseudocódigo
fuente
Pyth , 53 bytes
Un programa que imprime el resultado.
Pruébalo en línea!
Cómo funciona
srdC127
crea una lista de los caracteres ASCII imprimibles y los concatena en una cadena.c....,18 60
divide esta cadena en índices18
y60
, dando una lista de tres cadenas correspondientes a las diferentes partes de la salida: la parte superior, la media y la inferior..e
comienza un mapa enumerado sobre las cadenas con las cadenas comob
y sus índices comok
.[...)
crea una lista que contiene la acción deseada para cada parte del diagrama. La acción correcta se elige indexando en la lista con el índice actual, usando@...k
.Parte superior
cb2
divide la cadena en pares de caracteres y+L*9;
antepone9
espacios a cada par.Medio
c2b
divide la cadena en dos cadenas de igual longitud.Fondo
cL2cb4
divide la cadena en grupos de cuatro caracteres y cada grupo en pares..e
comienza un mapa enumerado, con los pares de cadenas comoZ
y sus índices comoY
.j*yYdZ
une los pares en2*Y
espacios y+*-8Yd
antepone8-Y
espacios.js
combina todos los resultados y se une a la lista resultante en nuevas líneas. Esto se imprime implícitamente.fuente
Haskell , 144 bytes
Pruébalo en línea!
Explicación:
b!n=[1..n]>>b
define una función!
que repite una lista o cadena-b
n
veces.unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])
usa esta función para dibujar un asterisco de asteriscos (¡Oh, la ironía!):#
se define como una función que reemplaza consecutivamente*
en una cadena con caracteres de una lista dada. Se llama con el asterisco de asteriscos anterior y[' '..]
que es una lista infinita de todos los caracteres que comienzan con el espacio' '
.fuente
" "!(2*n)
puede ser"(TWO SPACES)"!n
.Carbón de leña , 39 bytes (sin competencia)
Pruébalo en línea! AST proporcionó una explicación,
χ
siendo la variable preinicializada para10
.fuente
J 63
(no compitiendo)la expresión evalúa de derecha a izquierda así:
i: 10
cuenta de -10 a +10|
tomar abdominales para volver +10 a 0 a +10=
auto clasifica para obtener la forma de V de 1 en un bloque de 0|.
orden de fila inversa para obtener / \ shape( +. 1&|."1 )
la expresión de gancho desplaza cada fila a la derecha por una y OR con original( 9 21&$@{. , 1: , 1: , }. )
horquillas anidadas para colocar en horizontales y estirar la parte superior,
arrasar el bloque en una secuencia lineal para la acumulación( * +/\ )
acumularse y multiplicarse con uno mismo20 21 $
revierte la forma a un bloque 20 filas de 21 elementos31 +
agregue 31 porque el primero 1 debe ser un código de espacio 3232 >.
piso en 32a. {~
recoger caracteres de ascii incorporadofuente
smoutput
comando o equivalenteRuby, 91 bytes
Sin golf
fuente
Perdí una respuesta en C #, así que ...
C # (.NET Core) ,
175174 bytesPruébalo en línea!
fuente
int
s dentro del ciclo for:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Tcl , 209 bytes
Pruébalo en línea!
Tcl , 212 bytes
Pruébalo en línea!
tcl, 213
manifestacióntcl, 214
manifestación
tcl, 227
manifestación
tcl, 236
manifestación
tcl, 237
manifestación
Enfoque alternativo con el mismo tamaño:
manifestación
Tcl, 288
manifestacióntcl, 297 bytes (intento ingenuo)
manifestación
fuente
Poético , 899 bytes
Pruébalo en línea!
Poetic es un esolang que hice en 2018 para un proyecto de clase. Básicamente es una mierda mental con longitudes de palabra en lugar de símbolos.
Este poema es ... deprimente. 😟
fuente
Python 2.7,
194188 bytesfuente
map(chr
amap(c
comoc
ya se ha definido comochr
Jq 1.5 , 180 bytes
Expandido
Pruébalo en línea!
fuente
Barras ( /// ), 324 bytes
La primera acción (predeterminada) en Slashes es 'imprimir', por lo que se imprime la cadena. El
/
y\
debe ser escapado procediendo\
s.fuente
Java 8,
176173 bytesPuerto de la respuesta C # .NET de @Charlie , así que asegúrese de votarlo.
-3 bytes gracias a @ceilingcat .
Pruébalo en línea.
fuente