Escriba un programa que produzca una salida tal que:
- Aparecen al menos tres caracteres distintos.
- El número de ocurrencias de cada personaje es un múltiplo de 3.
Por ejemplo, A TEA AT TEE
es una salida válida desde cada uno de los 4 caracteres distintos, A
, E
, T
y (space)
, se produce 3 veces.
Por supuesto, un desafío sobre el número 3 debe tener un tercer requisito. Entonces:
- El programa en sí también debe seguir los dos primeros requisitos. (Esto significa que su programa tendrá al menos 9 bytes de longitud).
Debe escribir un programa completo, no una función. Asegúrese de mostrar la salida de su programa en su respuesta.
Además, para mantener las cosas interesantes, le recomendamos encarecidamente:
- no usar comentarios para cumplir el requisito 3 si puede evitarlo
- para producir una salida que no sea solo una cadena repetida 3 veces
- para hacer que la salida sea diferente del programa en sí (para los idiomas que pueden generar automáticamente el contenido de su propio programa, puede contribuir a este wiki comunitario ).
Este es el código de golf . El código más corto en bytes gana.
code-golf
restricted-source
Darrylyeo
fuente
fuente
123123123
funcionará, como está escrito actualmente)abcabcabc
con una nueva línea final.Respuestas:
Brain-Flak , Flakcats , Brain-Flueue , Brain-Flak Classic , Miniflak y Fλak 18 bytes
¡Probado óptimo!
Pruébalo en línea!
Explicación
Brain-Flak, Brain-Flueue, Miniflak y Fλak
Esto imprime:
(Hay una nueva línea al final)
Brain-Flak Classic
Brain-Flak Classic es la versión original de Brain-Flak y tiene algunas diferencias importantes con respecto a Brain-Flak moderno. En BFC
[...]
imprime su contenido en lugar de negarlo.Al final de la ejecución
3 3 3
se imprime el contenido de la pila ( ).Esto imprime:
(Hay una nueva línea al final)
Flakcats
Flakcats es bastante diferente de los otros 4 flaks y me sorprende que esto funcione en Flakcats. Los tres operadores aquí son casi los mismos que utiliza Brain-Flak.
La principal diferencia en este programa particular entre Flakcats es el
(...)
operador que en Flakcats es equivalente a([{}]...)
Brain-Flak. Sin embargo, esto no hace una diferencia para nosotros porque capta ceros y, por lo tanto, funciona de la misma manera que Brain-Flak.Aquí está ese programa compilado en Brian-Flak:
Esto imprime:
(Hay una nueva línea al final)
Prueba de optimización en Brain-Flak y Miniflak
Esta no es una prueba formal, sino más bien una prueba informal que debería ampliarse para ser más rigurosa.
Debido a las restricciones de que los programas Brain-Flak deben ser una cadena equilibrada y la longitud del programa debe ser un múltiplo de 3, cualquier envío válido debe ser un múltiplo de 6 de longitud. Esto significa que cualquier solución menor de 18 debe tener una longitud de 12.
Debido a que las salidas siguen a la nueva línea, la altura final de la pila debe ser un múltiplo de tres o romperemos las restricciones de salida.
Cualquier presentación válida de longitud 12 debe tener 2 tipos de llaves (tener menos rompería las restricciones en el número de caracteres distintos y más significaría más de 12 caracteres). Como el programa produce resultados, debe tener un impulso.
Esto nos deja para seleccionar nuestro otro conjunto de llaves. Las opciones son:
<...>/<>
Esto falla porque necesitamos generar un "valor" para crear cualquier número que no sea cero, debemos renunciar a un
()
para crear uno que hace imposible empujar más de dos veces.[...]/[]
Esto falla por la misma razón que la última falla. Los corchetes son realmente malos para hacer valor. La
[]
mónada puede crear valor, pero primero debemos presionar los números y luego no tenemos suficientes parentes para presionar tres veces.{...}/{}
Este es prometedor, podríamos crear un bucle y usar uno
()
para presionar varias veces, pero lamentablemente no es posible.Para que el ciclo finalice, debe haber un cero en la pila en algún momento y para que tengamos la salida correcta, debemos tener algo distinto de cero en la pila al final del programa. Como no tenemos
[]
ni<>
el cero al final del ciclo, debe ser un cero implícito desde el fondo de la pila. Esto significa que el ciclo no puede agregar ningún número nuevo a la pila, por lo que es inútil.Como ninguna de las opciones de llaves puede crear un programa de longitud 12, ninguna puede existir.
Dado que Miniflak es un subconjunto de Brain-Flak, cualquier programa Miniflak más corto también sería un programa Brain-Flak más corto y, por lo tanto, no existe.
Prueba de Optimidad en Flujo Cerebral
Brain-Flueue es un lenguaje de broma basado en Brain-Flak. Los dos son tan similares que sus intérpretes son idénticos en todas partes excepto en dos líneas. La diferencia entre los dos es, como sugieren sus nombres, Brain-Flueue almacena sus datos en colas mientras Brain-Flak almacena sus datos en pilas.
Para comenzar, tenemos las mismas restricciones en el tamaño del programa creado por Brain-Flak, por lo que estamos buscando un programa de tamaño 12. Además, necesitaremos un
(...)
para crear cualquier salida y otro par. los pares<>
y[]
no funcionan en Brain-Flueue por la misma razón por la que no funcionan en Brain-Flak.Ahora sabemos que nuestro programa debe consistir en los personajes
((())){{{}}}
.Mediante los mismos métodos utilizados en la prueba anterior, podemos demostrar que debe haber un bucle en el programa final.
Ahora aquí es donde las pruebas difieren, porque Brain-Flueue opera en colas en lugar de pilas, el programa puede salir de un bucle con valores en la cola.
Para salir del bucle, necesitaremos un cero en la cola (o una cola vacía, pero si la cola está vacía tenemos el mismo problema que Brain-Flak), esto significa que tendremos que abrir nuestro programa
({})
para crear el cero. Necesitaremos un empuje dentro del bucle para empujar la cantidad necesaria de elementos a la cola. También necesitaremos empujar un número distinto de cero antes del ciclo para que podamos ingresar al ciclo; Esto nos costará al mínimo absoluto(())
. Ahora hemos usado más parens que los que tenemos.Por lo tanto, no existe un programa Brain-Flueue para realizar la tarea que tenga 12 bytes, y además nuestro programa es óptimo.
Solución óptima en Flakcats y Brain-Flak Classic
La siguiente solución es óptima en Flakcats y Brain-Flak Classic.
Explicación
Soluciones alternativas de 24 bytes Brain-Flak
Pruébalo en línea!
Pruébalo en línea!
Pruébalo en línea!
fuente
Jalea , 9 bytes
Un programa completo que imprime 700227072 , que es 888 en cubos.
TryItOnline!
¿Cómo?
fuente
888^3
es700227072
? Eso es muy inteligente, quizás otros idiomas puedan usar este truco.Políglota de respuestas puramente literales, 9 bytes.
Esta es una publicación de la comunidad wiki para recopilar respuestas que son solo un literal que el idioma en cuestión imprime automáticamente. Debido a que es una wiki comunitaria, siéntase libre de editarla para agregar más idiomas donde funcione.
Este programa funciona en:
3
imprime los datos, el resto del programa es inútil manipulación de la pila)2\n2\n2\n1\n1\n1\n3\n3\n3\n
)Ignorando la nueva línea final, esto es válido en bastantes idiomas más:
La mayoría de los enlaces van a ¡Pruébelo en línea!
fuente
2\n2\n2\n1\n1\n1\n3\n3\n3\n
en realidad, que es perfectamente válido. ¿Debería eso agregarse a la publicación?echo '333111222';
(en PHP) pero funciona.C #,
114111118102 bytesSi no nos importa usar palabras adecuadas: (102 bytes)
Si nos interesan las palabras adecuadas: (120 bytes)
Mi envío original - sin distinción entre mayúsculas y minúsculas: (113 bytes)
Sé que el comentario no está realmente en el espíritu del CG, pero es todo lo que se me ocurre en un tiempo limitado, veré si puedo mejorarlo durante el día. Seguramente debo obtener al menos algunos puntos de bonificación por el guiño a ser aventurero.
Editar: ¡Gracias a roberto06 por atrapar las letras que faltan!
fuente
V
de su comentario y agregarvyt
, yaV
que solo está presente allí mientrasv
está presente dos veces (error tipográfico, supongo),y
también está presente dos veces yt
está presente 5 veces. Vea aquí . Sin embargo, ¡excelente trabajo!JavaScript,
3633 bytesAlertas
333111222
. Esto funciona porque|
convierte sus dos operandos en enteros de 32 bits, y cualquier valor que no se parezca a un entero (por ejemplo, la funciónalert
) se convierte0
.0|0
es0
, entonces el||
operador devuelve su operando correcto, o333111222
Algunas versiones más interesantes:
Salidas
(trelalert)\"(trelalert)\"(trelalert)\"
.Una solución usando
.repeat
sería de la misma longitud, gracias a lo compartidoaert
:que salidas
(trpp.all)\"(trpp.all)\"(trpp.all)\"
.Aprovechando las barras invertidas adicionales para eliminar
l
yp
casi funciona:Este sale
(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"
.fuente
CJam , 9 bytes
Salidas
012345678901234567890123456789
Pruébalo en línea!
Explicación
fuente
99,99,99,
, porque ¿por qué no?brainfuck , 12 bytes
Nadie dijo que la salida tenía que ser corta. Esto generará 3 copias de cada carácter ASCII, excepto los 2 primeros.
Puede probar que esto es lo más corto posible. Necesitas salida, por lo tanto, necesitas 3 '.' debe haber diferentes salidas, por lo tanto, necesita 3 [+ -] ahora tenemos hasta 6. Se deben imprimir 9 caracteres, lo que significa agregar 6 más '.' o agregando un bucle, que agregará otros 6 caracteres.
Pruébalo en línea!
fuente
Python 2,
3630 bytesComo una nueva línea final no está permitida, esto probablemente sea lo más corto posible:
Pruébalo en línea
Salidas
\"
tres veces, seguidas de tres nuevas líneas.Los siguientes programas no cuentan la nueva línea final, por lo que no son válidos.
27 bytes :
Imprime 54 de cada personaje en
print
.Pruébalo en línea
Misma longitud, salida más corta:
Salidas
printprint*3*3printprint*3*3printprint*3*3
24 bytes:
fuente
print"""printprint*3*3"""*3
por una producción mucho más corta ;-)print 123;print 123;print 123;
por la solución ingenua?print~9;print~9;print~9;
Perl 6 , 15 bytes
Imprime seis caracteres distintos, tres veces cada uno:
Pruébalo en línea!
Cómo funciona
$_
.$_
comienza como el objeto de tipo de tipoAny
, que sesay
imprime como(Any)
.fuente
C, 66 bytes
Salida
Versión antigua 72 bytes
fuente
JavaScript (ES6), 30 bytes
Salidas
[object Object][object Object][object Object]
.Funciona creando tres objetos:
los dos primeros son de la forma
{ "alert" : alert }
usando notación ES6{alert}
el tercero es un simple objeto vacío
A continuación, se utiliza
+
para concatenar juntos, y los tres tienen una expresión idéntica como una cadena,[object Object]
.El encabezado
+
es inútil, solo está presente para completar el número de+
caracteres, pero es inofensivo para la salida del programa.fuente
(ES6)
al título.PKod , 9 bytes
Salidas: 111222333
Explicación:
o tiene el código ascii char "111" en decimal. Por lo tanto, s agrega 111 a la variable, luego imprime el número. Primero "hijo" lo hace 111 e imprime 111. Luego lo hace 222 e imprime 222, finalmente lo hace 333 e imprime 333
fuente
Rubí , 12 bytes.
salidas
Pruébalo en línea!
Para cumplir con el segundo criterio "alentado", necesito 15 caracteres:
produce
¡Pruébalo en línea también!
fuente
Microscript II, 9 bytes
Explicación: Crea un bloque de código, pero no lo invoca. Cuando finaliza la ejecución, el contenido del registro principal (es decir, este bloque de código) se imprime implícitamente.
fuente
{}
técnicamente sería una quine, pero no creo que cumpla con nuestra definición de una "quine adecuada"."q"q
Sin embargo, el programa (que sí presenté al desafío quine) sí.Hexagonía , 9 bytes.
Pruébalo en línea!
Imprimir
120120120
.x
puede ser reemplazado porf-m
(102-109)Explicación
El
xx@@
es solo un relleno para cumplir con las reglas. El flujo principal se guardax
en la memoria (con un valor ASCII 120) y luego se imprime como un número 3 veces.fuente
C, 111 bytes
(Observe cómo el recuento de bytes también son los tres mismos números. Wow. No puede hacer más meta que eso).
Huellas dactilares:
fuente
PHP , 33 bytes
Optamos por algo más interesante que el programa de 9 bytes sin etiqueta PHP.
Salidas
<?;<?=;'"<?;<?=;'"<?;<?=;'"
Pruébalo en línea!
fuente
99 , 15 bytes
Eso es nueve nueves, tres espacios y tres avances de línea, la salida es -1110-1110-1110 .
Pruébalo en línea!
¿Cómo?
Los dos espacios se tratan como uno, este tercer espacio también podría ser un espacio final en cualquier línea.
fuente
Bash + coreutils,
159 bytesPruébalo en línea!
Salida de muestra:
(Si prueba esto, imprimirá su uid, gid, etc., 3 veces).
Si desea evitar repetir la misma cadena 3 veces (y también tener la misma salida para todos, a diferencia de mi primera respuesta), lo mejor que he encontrado para las utilidades bash + Unix es de 15 bytes de longitud:
¡Prueba esta segunda versión en línea!
Salida:
(No hay líneas nuevas en el programa, 12 líneas nuevas en la salida).
Explicación del programa de CC en esta respuesta:
fuente
LOLCODE ,
273240 (360286) bytesTenga en cuenta la nueva línea final y pruébelo en línea . La segunda línea fue más o menos arbitraria y posiblemente puede ser reemplazada por un comando más corto, pero acabo de aprender LOLCODE para este rompecabezas. Como se requiere el número de versión en la primera línea, utilicé los números para agregar bucles de longitud 1, 2 y 0 mod 3 para asegurar que se imprimirá el número correcto de caracteres. A partir de esto, simplemente conté cada personaje (con esta herramienta ). Si aparecía 0 mod 3 veces, no se requería ninguna acción. Si aparecía 1 mod 3 veces, se agregaba al bucle 1 y 2 para que apareciera tres veces en la salida. Si apareció 2 mod 3 veces, el personaje se agregó al 12-loop. EDITAR: Al reemplazar el primero
VISIBLE
con una asignación (aún inútil pero requerida para tener 12 en lugar de 11 líneas nuevas), pude cortar 33 bytes.Salida (60 bytes):
Tenga en cuenta la nueva línea final.
Lo bueno de esta solución en comparación con las otras respuestas es que la Salida puede manipularse fácilmente para generar texto algo significativo. Ejemplo (286 bytes con una nueva línea al final):
Pruébalo en línea. Salida (222 bytes con nueva línea final):
Lamentablemente, no soy tan bueno con los anagramas como pensaba: ')
fuente
CÁSCARA
bromear :) ( 9 Bytes )
o más en serio ( 24 Bytes )
Resultado:
fuente
PHP, 24 bytes
fuente
<?
junto con laecho
declaración inmediata<?=
para generar 123 3 veces.<= ?>
caracteres no aparecen un múltiplo de 3 veces.Lote,
3621 bytesSalidas
Editar: Guardado 15 bytes gracias a @ P.Ktinos.
fuente
Japt, 9 bytes
Impresiones
undefinedundefinedundefined
. ¡Pruébelo en línea!Explicación
Este código se transpira en el siguiente JavaScript:
O.o
es una función que genera algo sin una nueva línea final. Cuando no se le da argumento, imprimeundefined
, lo que podría considerarse un error, pero es útil aquí. También regresaundefined
, por lo que se imprimen las tres llamadasundefined
.Estoy seguro de que hay muchas otras formas de hacer esto ...
fuente
05AB1E , 9 bytes (supongo que se podría decir que esto fue un pedazo de PI)
-0 bytes gracias a Emigna / ETHProductions, hicieron la solución más correcta.
Versiones alternativas:
[g-Q]
- Puede poner cualquier letra aQ aquí, siempre que coincidan (ver más abajo).Pruébalo en línea!
Explicado:
PI,PI,PI,SORT,JOIN,SORT,JOIN,SORT,JOIN.
Resultado:
...111111222333333333444555555555666777888999999999
La razón por la que solo tiene 9 bytes es porque no necesita los tipos, solo los puse para ayudar a ilustrar.
Resultado sin
{
el código:3.1415926535897933.1415926535897933.141592653589793
Rendiciones alternativas:
Se pueden usar los siguientes comandos en lugar de PI:
fuente
žv
,žw
ožx
son válidos, aunque como cada uno tiene solamente 2 números distintos.at least 3
, era solo PI al principio cuando lo escribí. ¿Qué quieres decir con clases de personajes al revés?JJJ
con???
.Cubix , 12 bytes
Una respuesta un poco aburrida realmente. Salidas tres
10
s seguidas de nuevas líneasPruébalo en línea! Mapas al cubo
N
Empuja 10 a la pilaOo
x3 Salidas 10 y la nueva línea@
detiene el programaLa inicial
N@N@
no es golpeada.fuente
N@N@NOoOoOo@
y no incluye ningún espacio.Pepe , 24 bytes
Pruébalo en línea!
El programa contiene 6 r's, 6 e's y 12 E's.
Explicación:
Salida:
fuente
V , 9 bytes
Pruébalo en línea!
Salidas
12i
24 veces:Vim, 12 bytes
Emite lo mismo que la respuesta V
fuente
apilado , 24 bytes
Pruébalo en línea! Salidas
54
cada una dep
u
yt
.fuente
Befunge 93 , 9 bytes
TIO
Impresiones
0 0 0
(espacio final, seguido de 3 bytes nulos)Como la pila de Befunge está rellenada con
0
s, podemos imprimir tanto el carácter ASCII con ese valor como el entero mismo. Debido a que Befunge imprime automáticamente un espacio después de un número entero, nos quedan 3 caracteres distintos..
imprime0
(espacio final),,
imprime un byte nulo y@
finaliza el programafuente