Junta de monopolio
Para este desafío de código de golf construiremos el juego de mesa Monopoly.
Reglas:
- No tomes ninguna entrada.
- Imprima una placa de 11x11 donde cada carácter ASCII que forma la placa es la primera letra de cada espacio de la versión estadounidense de la placa Monopoly.
- Los caracteres deben estar separados por espacios.
Go
debería comenzar en la parte inferior derecha.
La cadena exacta para producir es
F K C I I B A V W M G
N P
T N
C C
S P
P S
V C
S P
E L
S B
J C V C O R I B C M G
Tenga en cuenta que de abajo a la derecha a la izquierda los cuadrados son los siguientes:
G --> Go
M --> Mediterranean Avenue
C --> Community Chest
B --> Baltic Avenue
I --> Income Tax
...
J --> Jail
Editar Wow! ¡Seguro que les gustó este! :)
code-golf
string
ascii-art
kolmogorov-complexity
board-game
jacksonecac
fuente
fuente
Respuestas:
Retina , 74 bytes
Las líneas tercera a última y última deben contener un solo espacio.
Pruébalo en línea!
Explicación
Esto reemplaza la entrada (vacía) con la cadena en la segunda línea.
Esta es una etapa dividida, que divide la cadena alrededor de las coincidencias de la expresión regular
(._.)
(es decir, tres caracteres con un_
en el medio). La razón por la que colocamos toda la expresión regular en un grupo es que las etapas divididas también devuelven los resultados de capturar grupos. Por ejemplo, dividirabcd
alrededorbc
da[a, d]
, pero dividirlob(c)
da[a, c, d]
. De esta manera, obtenemos todas las._.
partes en líneas separadas, pero también las partes de 11 caracteres al principio y al final. Usamos la_
opción para omitir resultados vacíos entre las._.
coincidencias individuales . El resultado sería este:A continuación procesamos los guiones bajos:
Esto reemplaza cada guión bajo con nueve
1
s. La razón por la que usamos1
s aquí en lugar de espacios de inmediato es que hace que sea más fácil insertar los espacios de relleno a continuación.Recuerda que hay un espacio en la segunda línea. Esto inserta un espacio en cada posición que no es un límite de palabra, es decir, en todas partes excepto al principio y al final de las líneas.
Y finalmente, reemplazamos todos esos
1
s con espacios también.fuente
(._.)
.Jalea , 44 bytes
Pruébalo en línea!
Idea
Si eliminamos cada segunda columna y transponemos filas con columnas, obtenemos el siguiente tablero.
Ahora, podemos rotar cada columna una unidad hacia la derecha, moviendo todos los espacios restantes hacia la derecha.
A continuación, se elimina el resto de espacios y saltos de línea reemplazamos con la letra D .
Ahora, reemplazamos cada letra con su índice basado en 1 en el alfabeto.
Luego, convertimos esta matriz de dígitos de la base biyectiva 23 a entero.
Ahora, convertimos este entero a la base biyectiva 250 .
Finalmente, usamos estos dígitos para indexar en la página de códigos de Jelly .
Estos son los datos codificados que incluiremos en el programa ( 29 bytes ). Para producir la salida deseada, solo tenemos que invertir los pasos anteriores.
Código
fuente
z
) con un relleno.05AB1E ,
4847 bytes¡Gracias a Emigna por guardar un byte!
Explicación:
Primero algo de compresión.
•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•
es una versión comprimida del siguiente número:Después de eso, esto se convierte en base 33 , lo que da como resultado la siguiente cadena:
Los ceros se reemplazan por 9 espacios , utilizando el siguiente código
¾9ð×:
. Después de eso,S
dividimos la cadena en caracteres y los dividimos en piezas de 11 elementos (hecho con11ô
). Obtenemos la siguiente matriz bidimensional:Nos gridify esta matriz con
»
y salida implícitamente.Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
•(K·;“…¬È¦z"9äuŸé;TÞîÕs‡ÓÐV9XÒt\<•33B¾9ð×:S11ô»
Python 2, 89 bytes
Crea la plantilla.
para sustituir en letras a través del formato de cadena. La plantilla usa dos tipos de líneas:
l
de 11 copias de letra más espacio, luego una nueva línea. También se usa para la primera y última línea. Tiene un espacio posterior.Python 3.5 puede guardar un byte con el desempaquetado de tuplas
(*'...',)
.fuente
PowerShell v2 +,
13112311411099 bytesEsta es solo una cadena literal con nuevas líneas colocadas en la tubería, con un poco
-replace
al final para convertirlas0
en19
espacios. La primera y la última línea son textuales. Con solo 10 espacios y poca repetición, de lo contrario, no había suficiente espacio para jugar al golf. Esta cadena se deja en la tubería, y la salida por vía implícitaWrite-Output
ocurre al finalizar el programa.fuente
Javascript ES6 REPL ,
105102101 bytesNo hay mucho interesante pasando aquí. Pegue en la consola para ver los resultados deseados.
Guardado 3 bytes gracias a @Arnauld
Guardado 1 byte más gracias a @Neil
Mostrar fragmento de código
fuente
1
s con espacios y use esta expresión regular en su lugar:.replace(/.( ?)/g,`$& `+`$1`.repeat(17))
1
s con espacios y usar esta función en su lugar:a=>a-1?a.repeat(18):a+' '
/// ,
10098 bytesPruébalo en línea!
Por alguna misteriosa razón, parece haber espacios detrás del
G
s. Sin ellos, mi código habría sido de 96 bytes.¡Gracias a 42545 (ETHproductions) y 56258 (daHugLenny) por reducir 1 byte cada uno!
fuente
G
s en la primera y última línea?Turtlèd , 72 bytes
Pruébalo en línea
>
gira la tortuga,"foo"
escribe cadenas en la cuadrícula. el último"
fue elidablefuente
V ,
75, 62, 59 bytesPruébalo en línea!
Dado que este codel contiene caracteres no ASCII, aquí hay un hexdump:
Explicación. Primero, ingresamos el siguiente texto:
Luego, volvemos
<esc>
al modo normal. En este punto, el cursor está en la tercera línea de la últimaG
. Convenientemente, hay un comando para colocarnos en la primera columna de la línea justo encima del cursor. Ese comando es-
. Luego, una vez que terminamos en la segunda línea (en laN
), ejecutamos el siguiente ciclo:Explicación:
Ahora, el búfer se ve así:
Ahora usamos una expresión regular comprimida para reemplazar cada personaje con ese personaje y un espacio. Esa es la
Í./&
parte Esto se traduce en el siguiente vim regex:Lo que significa:
fuente
R,
149146bytesNo es tan impresionante, pero tampoco estoy seguro de cómo se jugaría esto. Explotar de
paste
alguna manera es mi primera suposición. Compare con el texto sin formato de 241 bytes.Violín R
fuente
Python 2, 108 bytes
Ligeramente diferente a la otra respuesta de Python, sin usar reemplazos, solo cadenas se unen.
fuente
Perl, 90 bytes
Enfoque bastante aburrido, no se me ocurre una mejor manera de reducir ... Requiere
-E
sin costo adicional. Emite un espacio adicional al final de cada línea. -2 bytes gracias a @Dada !Uso
fuente
perl -E 'say"FKCIIBAVWMG\nNZP\nTZN\nCZC\nSZP\nPZS\nVZC\nSZP\nEZL\nSZB\nJCVCORIBCMG"=~s/Z/$"x9/ger=~s/./$& /gr'
. (Reemplace\n
por líneas nuevas literales para llegar a 90).Jolf, 72 bytes
¡Reemplace todo
♣
con\x05
, o pruébelo aquí!Esto le da la cadena deseada.
fuente
Java 7,
177165142131 bytes-15 bytes gracias a @BassdropCumberwubwubwub .
-11 bytes gracias a @Numberknot .
Ungolfed y código de prueba:
Pruébalo aquí
Salida:
fuente
String c(){String s=" ";return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace(""," ").replace("_",s);}
por 150 (tenga en cuenta que stackexchange elimina espacios excesivos)s
pero stackexchange los eliminó. Aquí está la ideona , ahora incluso a 142 bytess=" "
. En ese caso es más corto. Y.replace(""," ").replace("_",s);
puede ser en.replace("_",s).replace(""," ");
cambio por -8 bytes adicionalesString c(){return"FKCIIBAVWMG\nN_P\nT_N\nC_C\nS_P\nP_S\nV_C\nS_P\nE_L\nS_B\nJCVCORIBCMG".replace("_"," ").replace(""," ");}
( 131 bytes )Befunge, 120 bytes
La primera línea tiene la cadena que se imprimirá al revés (parece que no, pero el código va hacia atrás en esa línea). La segunda línea imprime las filas superior e inferior. La tercera línea y el lado izquierdo de la cuarta línea imprimen las filas del medio, y el pequeño trozo en la parte inferior derecha hace algo interesante: mueve el cursor hacia la segunda fila para imprimir la última línea, pero después de terminarla, en paz.
Como puede ver en la primera línea, las cadenas están separadas por espacios para distinguir entre la primera, la mitad y la última fila. Los espacios pueden ser cualquier otra cosa, y si usara caracteres ASCII 0-9, podría haber guardado fácilmente 4 bytes. El $ que ve es solo un carácter basura que tiene que estar allí y podría reemplazarse con cualquier cosa que no sea un espacio.
fuente
J,
7773 bytesTenga en cuenta que 43 bytes, más de la mitad del total, se utilizan solo para la cadena
' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'
.Explicación
Primero, haz una lista
Luego haga su tabla de tiempos
Luego prueba la igualdad con cero
Aplane, encuentre las sumas acumulativas y multiplique por elementos
Luego, únase con ceros, divídalo en sublistas de longitud 22, suelte el encabezado de cada sublista y use los valores como índices en la cadena
' FKCIIBAVWMGNPTNCCSPPSVCSPELSBJCVCORIBCMG'
fuente
(' ',@,.~]);._1';FKCIIBAVWMG;N_P;T_N;C_C;S_P;P_S;V_C;S_P;E_L;S_B;JCVCORIBCMG'rplc'_';9#' '
_11,@,.&' '\'FKCIIBAVWMGN_PT_NC_CS_PP_SV_CS_PE_LS_BJCVCORIBCMG'rplc'_';9#' '
En realidad , 74 bytes
Pruébalo en línea!
Este programa funciona con el mismo principio básico que la respuesta Python 2 de xnor .
Explicación (líneas nuevas reemplazadas
\n
por claridad):fuente
C # 6,
192190 BytesSin espacio final; sin rastro de nueva línea.
Una solución sencilla. Comience con la cadena literal.
Replace
!
por 9 espacios. LuegoSplit
en 11 cadenas por~
, y más achar
s (interiorSelect
). Agregue un espacio a cada carácter, luegoJoin
vuelva a 11 cadenas. Finalmente otroJoin
por personaje de nueva línea.fuente
Ruby, 92
Programa completo, imprime en stdout usando
$> <<
Hay 40 letras en total para trazar. Las letras 10 a 28 alternan entre ser seguidas por una nueva línea o
' '*19
. Las letras anterior y posterior están separadas por espacios individuales.fuente
Perl,
115112 bytesProduce el siguiente resultado:
La primera y la última fila de salida tienen un espacio final. El código utiliza reemplazos de expresiones regulares y el hecho de que si los objetos no están definidos, se interpretan como cadenas (por ejemplo, FKCIIBAVWMG se trata como "FKCIIBAVWMG". No se pudieron eliminar las comillas de la última fila debido a la nueva línea anterior, que No podría encontrar ningún otro lugar.
Edición 1: guardado 3 bytes reemplazándolos
" "
con$"
, eliminando los paréntesis externos e insertando un espacio después de la impresión, y eliminando los paréntesis$"x19
y agregando un espacio después (para.
que no se interprete como un decimal)fuente
s/(.)/\1 /
puede ser reemplazado pors/./$& /
. Suelta el punto y coma final. Use ensay
lugar deprint
(para eso necesitará agregar-M5.010
o usar en-E
lugar de-e
, pero ambos son gratuitos (ver aquí )). Nuevas líneas literales en lugar de\n
.Carbón , 66 bytes
Pruébalo en línea!
Box(21, 11, 'F K C I I B A V W M GPNCPSCPLBG M C B I R O C V C JSESVPSCTN')
.Sin competencia, 36 bytes
fuente
Python 2, 116 bytes
Bastante sencillo, por cualquier razón, aunque el reemplazo de cadenas es tan detallado que fue lo mejor que se me ocurrió. Posiblemente el uso
re
podría ser más corto.fuente
print'F K C I I B A V W M G\nN@P\nT@N\nC@C\nS@P\nP@S\nV@C\nS@P\nE@L\nS@B\nJ C V C O R I B C M G'.replace('@',' '*19)
también es de 116 bytes sin usar join si quieres ser más directo. Alternativamente,print' '.join('FKCIIBAVWMG!N@P!T@N!C@C!S@P!P@S!V@C!S@P!E@L!S@B!JCVCORIBCMG').replace('! ','\n').replace('@',' '*17)
es de 115 bytes si se permite el espacio en blanco final. (El argumento para reemplazar es '!', En lugar de '!'.)Lote, 171 bytes
fuente
Lenguaje GameMaker, 148 bytes
Sé que es bastante básico, pero no creo que esto se pueda superar en GML ...
fuente
GDScript
lenguaje delGodot
motor del juego. Pero, no estoy seguro si estaría bien :)string_repeat(" ",19)
tiene la misma longitud que" "
.Pip , 64 bytes
63 bytes de código, +1 para
-S
bandera.Pruébalo en línea!
Explicación
Operadores utilizados:
.
(binario) se concatena (opera por elemento en las listas).X
(binario) cadenas-multiplica. (s
es una variable preinicializada a" "
).^
(unario) divide una cadena en una lista de caracteres..*
es otra forma de dividir una cadena en caracteres. Consiste en unario.
, que es un no operativo en cadenas, emparejado con el*
metaoperador, que asigna un operador unario a cada elemento en su operando (iterable). El uso.*"..."
nos permite guardar un byte sobre(^"...")
- los paréntesis serían necesarios porque.
tiene mayor prioridad que^
.PE
antepone un elemento a una lista.AE
agrega un elemento a una lista.Con ese trasfondo, aquí está el código paso a paso:
Cuando este resultado se imprime automáticamente, la
-S
bandera se une a las sublistas en los espacios y la lista principal en las nuevas líneas, dando el resultado deseado.fuente
C,
171156 bytesTambién muestra un carácter de nueva línea al final ... Probablemente podría jugar un poco más.
fuente
Perl 5,
9286 bytesUsos
sprintf
, relleno y el operador de repetición de cadenax
.fuente
\n
con nuevas líneas literales, no necesita espacios entre elx
operador y el número que sigue, y finalmente reemplazasplit//,xxx
conxxx=~/./g
.Haskell,
128125114 bytesPruébalo aquí
((:" ")=<<)
isconcatMap (\a -> [a,' '])
- rellena agregando un espacio detrás de cada letra en su entradafuente
Powershell, 95 bytes
Inspirado por la respuesta de @ AdmBorkBork .
Explicación
El primer operador de reemplazo forma el rectángulo
11x11
.El segundo operador de reemplazo inserta un espacio después de cada carácter. El resultado tiene espacios finales.
fuente