Una comunicación más fácil significa una codificación más rápida significa menos codificadores significa ...


28

Mi padre, que era un APLer realmente bueno y me enseñó todos los conceptos básicos de APL (y mucho más), falleció este día, hace cinco años. En preparación para 50 años de APL , encontré esta carta de patente (traducida para la comodidad de aquellos que no leen danés) para un logotipo escrito a mano. Explica una razón importante para que APL nunca obtenga una gran base de usuarios, una razón que, por supuesto, también se aplica a todos los increíbles idiomas de golf de esta comunidad:


A 3497/77 Req. 29 º de agosto de 1977 en 13

UNA COMUNICACIÓN MÁS FÁCIL SIGNIFICA UNA CODIFICACIÓN MÁS RÁPIDA SIGNIFICA MENOS CODIFICADORES SIGNIFICA ...

Henri Brudzewsky, empresa de consultoría de ingeniería, Mindevej 28, Søborg,

clase 9 , incluidas las computadoras, especialmente las computadoras codificadas por APL,
clase 42: empresa de agencias de servicios de TI, especialmente durante el uso de computadoras codificadas por APL.


Tarea

Produzca una salida infinitamente repetida del texto EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS sin nuevas líneas. Puede comenzar el texto con EASIERo FASTERo FEWER.


¡ Interpreté mal tu desafío y lo que hice fue i.imgur.com/qKnTj3q.png !
sergiol

@sergiol Casi válido por aquí .
Adám

El enlace a la carta de patente está muerto.
pppery

@pppery Gracias. Actualizado.
Adám

Respuestas:


14

05AB1E , 25 bytes

[‘æƒËRSˆ¾¥ƒŽÁˆ¾¡ŸÂ ‘?

Pruébalo en línea!

Explicación:

[‘æƒËRSˆ¾¥ƒŽÁˆ¾¡ŸÂ ‘?
[                         Start infinite loop
 ‘æƒËRSˆ¾¥ƒŽÁˆ¾¡ŸÂ ‘   Push the compressed string in uppercase, starting from FEWER, with a trailing space
                        ?  Print without trailing newline

13
Honestamente, no entiendo por qué las soluciones de Python obtienen explicaciones y esta no. ¿Qué demonios está pasando aquí?
nluigi

3
@nluigi black magic
Nic Robertson

2
Es físicamente imposible saber qué está pasando aquí si no sabes el idioma, ¿te importaría dar una explicación por favor?
George Willcox

1
@nluigi [significa 'inicio de bucle infinito', ‘æƒËRSˆ¾¥ƒŽÁˆ¾¡ŸÂ ‘es una versión comprimida de EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS , y ?significa imprimir sin nueva línea.
Okx

1
@Leo Eso está muy poco explicado. Primero, vas a este archivo. A la derecha de algunos de los caracteres extendidos, puede ver un número. Si es de un dígito, rellene con un cero a la izquierda. Dos de estos caracteres forman un número de 4 dígitos con posibles ceros a la izquierda. Luego, este número se usa como un índice de base cero para este diccionario. El comportamiento de cada palabra depende de las comillas, que puede encontrar en el primer archivo que vinculé buscando compressed.
Erik the Outgolfer

41

SVG (HTML5), 336 bytes

<svg width=500 height=500><defs><path id=p d=M49,250a201,201,0,0,1,402,0a201,201,0,0,1,-402,0></defs><text font-size="32"><textPath xlink:href=#p>EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS</textPath><animateTransform attributeName=transform type=rotate from=360,250,250 to=0,250,250 dur=9s repeatCount=indefinite>

Editar: Algunas personas han descubierto que la fuente no es adecuada para ellos, así que aquí hay una versión que le permite unos pocos píxeles de ajuste:

<p><input type=number value=0 min=0 max=9 oninput=p.setAttribute('d','M250,250m20_,0a20_,20_,0,1,1,-20_,-20_a20_,20_,0,1,1,-20_,20_a20_,20_,0,1,1,20_,20_a20_,20_,0,1,1,20_,-20_'.replace(/_/g,this.value))></p>
<svg width=500 height=500><defs><path id=p d=M250,250m200,0a200,200,0,1,1,-200,-200a200,200,0,1,1,-200,200a200,200,0,1,1,200,200a200,200,0,1,1,200,-200></defs><text font-size="32"><textPath xlink:href=#p>EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS</textPath><animateTransform attributeName=transform type=rotate from=360,250,250 to=0,250,250 dur=9s repeatCount=indefinite>


Esto es hermoso, pero ¿puedes hacerlo al revés (la parte superior de las letras que salen del círculo) y todo en mayúscula?
Adám

@ Adám ¿Cómo es esto? Tuve que ajustar ligeramente las dimensiones, pero es el mismo número de bytes.
Neil

1
@ Adám, deberías; eso es lo que pensé que sería este desafío la primera vez que lo leí.
Shaggy

8
Falta un espacio en "MEANSEASIER", que está presente entre otras palabras.
ShreevatsaR

1
@ShreevatsaR He agregado una segunda versión que incluye un cuadro de texto para hacer pequeños ajustes, tal vez eso ayude.
Neil

13

PHP, 76 bytes

for(;;)echo strtr(EASI0MMUNICATION1FAST0DING1FEW0DERS1,["ER CO"," MEANS "]);

Pruébalo en línea!


44
Solo en PHP ....
user253751

@immibis ¿Qué quieres decir?
Jörg Hülsermann

Quiero decir que lograste demostrar al menos 3 "peculiaridades de diseño" de PHP en una línea de código. Esta línea de código es una ilustración de por qué PHP se considera dañino.
user253751

1
@immibis "a mimimi no le gusta php" Pensé que habíamos superado ese punto durante una década. :-)
Zsolt Szilagy

44
@ Arc676 Primero, se supone que un nombre sin signo de dólar es una constante. En segundo lugar, se supone que una constante indefinida es ella misma como una cadena. Entonces en este código EASI0MMUNICATION1FAST0DING1FEW0DERS1se trata como la cadena "EASI0MMUNICATION1FAST0DING1FEW0DERS1". Tercero, strtrespera una matriz asociativa (un "mapa" o "diccionario" en otros idiomas), pero este código pasó en una matriz regular, por lo que trata la matriz regular como una matriz asociativa con las teclas 0 y 1. Finalmente, esos enteros 0 y 1 me tratan como cadenas "0"y "1"porque, lo adivinaste, la función necesita cadenas.
onda

11

Vim 69 bytes

qqAFEWER CODERS MEANS EASIER COMMUNICATION M<C-n> FASTER CODING M<C-n> <esc>@qq@q

Simplemente me encanta cuando una secuencia de comandos Vim sencilla es una solución de golf de código decente. :-D
DevSolar

7

HTML, 122 bytes.

Lo siento, no puedo evitarlo.

<marquee style="width:5em;word-spacing:5em;">EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS </marquee>


¿Por qué la gran separación de palabras?
Adám

@ Adám Porque una marquesina siempre deja esa cantidad de ancho entre iteraciones (es decir, su propio ancho). Y no pude encontrar una manera de colapsar eso, así que tuve que improvisar y poner la misma cantidad de espacio entre cada palabra también.
Sr. Lister

¿No puedes eliminar la etiqueta final?
NoOneIsHere

@NoOneIsHere ¿Cómo ayudaría eso? ¿O quisiste decir que lo reduciría en 10 bytes? No estoy seguro de querer hacer eso; la etiqueta final no es realmente opcional.
Sr. Lister el

@ MrLister me refería al golf. Pensé que los documentos HTML de etiqueta única no necesitaban la etiqueta final.
NoOneIsHere

6

Python 2 , 82 81 bytes

-1 byte gracias a Leaky Nun.

Probablemente estoy haciendo algo mal, pero es muy tarde así que meh. Tenga en cuenta la coma final.

while 1:print'FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS',

Pruébalo en línea!

Otra solución, 85 bytes.

Probablemente pueda jugar golf más allá.

while 1:print'%sER CO%s MEANS'*3%('FEW','DERS',' EASI','MMUNICATION',' FAST','DING'),

Pruébalo en línea!


1
Puedes eliminar el segundo espacio.
Leaky Nun

@LeakyNun ¿Cómo me perdí eso? o0 Gracias!
Totalmente humano

En el segundo, puede mover los espacios a la cadena de formato.
wizzwizz4

@ wizzwizz4 El espacio en blanco principal no está permitido.
totalmente humano

2
@totallyhuman Actualmente, tiene un error en el que se mostrará "MENOS CODIFICADORES DE COMUNICACIÓN MEDIANTE MÁS RÁPIDO MEDIANTE MENSAJERO ...". Si cambia la cadena de formato '%sER CO%s MEANS 'y elimina los espacios de los elementos de formato, será más elegante y funcionará correctamente.
wizzwizz4

5

Jalea , 33 29 bytes

4 bytes gracias a Erik the Outgolfer.

“©%5ÐƬwȮh¬Þ6.⁷ḷḊḥṫɠlḶṀġß»Œu⁶¢

Pruébalo en línea!


1) Puede usar una cadena mejor comprimida: “©%5ÐƬwȮh¬Þ6.⁷ḷḊḥṫɠlḶṀġß»(todavía necesita usar Œuy ;⁶) 2) Puede usar en ßlugar de 1¿.
Erik el Outgolfer

5

Brachylog , 70 bytes

"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS "w↰

Pruébalo en línea!

Cómo funciona

"..."w↰
"..."     generate the string "..."
     w    print to STDOUT without trailing newline
      ↰   do the whole thing all over again

4

HTML / CSS (sólo para Firefox), 179 177 183 176 173 bytes

<b id=a>EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS </b>E<a><style>*{margin:0;}a{position:fixed;left:0;right:0;height:1em;background:-moz-element(#a)}

Certianly en ninguna parte cerca de los puntajes más bajos, solo pensé que sería divertido obtener una repetición infinita en HTML / CSS, sin ningún JS involucrado :)

Registro de cambios:

  • Se eliminaron las comillas alrededor del atributo id
  • Se agregó una repetición de fondo "redonda" para estirar el texto de modo que se ajuste correctamente
  • cambiado a salida de una sola línea
  • reemplazar width:100%estilo con right:0para guardar 3 bytes

Buen intento, pero eso comienza de nuevo en cada línea. OP: sin nuevas líneas.
Adám

Cualquiera de las respuestas que se imprimen en un terminal se ajustará al final de la fila. Intenta alejar; verás que continúa siempre horizontalmente también, simplemente está "oculto" por la ventana del navegador.
user371366

Además, desperdicié algunos bytes con la imagen repetida "redondeando" para que quede más convincente, espero que ayude
User371366

La envoltura está bien, pero la tuya no. Se podría ver como "imprimir" infinitas líneas infinitas. Simplemente restrinja el fondo a una sola línea.
Adám

1
sí. pensé que tendría que poner repeat no-repeato ; background-repeat: repeat-x, pero descubrí cómo evitarlo. Resulta que obedecer la especificación ahorra bytes!
user371366



3

LOLCODE , 116 bytes

HAI 1
IM IN YR O
VISIBLE "FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS "!
IM OUTTA YR O
KTHXBYE

Pruébalo en línea!


No estoy familiarizado con LOLCODE. ¿Cómo sale esto para siempre?
Esolanging Fruit

@ Challenger5 IM IN YR ...y IM OUTTA YR ...forma un bucle infinito.
Leaky Nun

1
Puede eliminar HAI y KTHXBYE ya que los compiladores no los requieren. Además, no hay exclamación al final de VISIBLE.
OldBunny2800

@ OldBunny2800 ¿Qué versión de LOLCODE está utilizando? En esta versión, el seguimiento !suprime el retorno de carro después de la impresión.
Arc676

Oh, me olvidé de la regla de no romper líneas. ¡No me di cuenta de que LOLCODE tenía una manera de hacer esto!
OldBunny2800

3

Ruby, 77 bytes

asignando " MEANS "a una variable guardado todo 1 byte :-)

loop{$><<"EASIER COMMUNICATION#{m=" MEANS "}FASTER CODING#{m}FEWER CODERS"+m}

3

JavaScript (ES6), 90 87 bytes

while(1)console.log`EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS `

Alternativa de funcionamiento, 100 bytes

¡"Funcionar" aquí significa "no bloqueará su navegador" (por un tiempo, al menos)!

setInterval(_=>console.log`EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS `,1)

1
Su código no funciona: document.write`EASIER COMMUNICATION${m=" MEANS "}FASTER CODING${m}FEWER CODERS`+mes equivalente a document.write([ 'EASIER COMMUNICATION', 'FASTER CODING', 'FEWER CODERS' ], ' MEANS ', ' MEANS ') + ' MEANS ', que 1) convertirá todos los argumentos en cadenas y concatena (impresión EASIER COMMUNICATION,FASTER CODING,FEWER CODERS MEANS MEANS ), y 2) no incluirá el último de ' MEANS 'todos modos ya que está fuera de la llamada a la función ...
Frxstrem


2

Octava, 86 bytes

while fprintf('FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS ')end

Explicación:

Esto se explica por sí mismo. El único "truco" real aquí es usar while fprintf. Cuando fprintfse le da un argumento de retorno, devolverá el número de caracteres impresos, y todos los números distintos de cero se consideran trueen Octave, por lo que la condición del bucle siempre será verdadera.


Intenté desesperadamente acortar el enfoque más interesante, pero resultó ser 9 bytes más largo, desafortunadamente:

while fprintf('FEW%sDERS%sEASI%sMMUNICATION%sFAST%sDING%s',{'ER CO',' MEANS '}{'ababab'-96})end

Esto intenta insertar las cadenas 'ER CO'y ' MEANS'en la cadena en las ubicaciones correctas, utilizando la indexación directa donde 'ababab'-96hay una versión más corta [1 2 1 2 1 2].

Esto fue un poco más corto (93 bytes), pero aún más largo que el enfoque ingenuo

while fprintf('FEWER CODERS%sEASIER COMMUNICATION%sFASTER CODING%s',{' MEANS '}{[1,1,1]})end

Y otro (89 bytes), utilizando el enfoque de Level River St:

while fprintf(['FEWER CODERS',s=' MEANS ','EASIER COMMUNIDATION',s,'FASTER CODING',s])end

Esto debería funcionar en teoría, por un byte menos que la solución original, pero falla por alguna extraña razón:

while fprintf"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS "
end

Esto utiliza la función con errores que fprintf('abc def')es equivalente a fprintf"abc def". El enddebe estar en la siguiente línea, pero aún así es un byte más corto ya que dos paréntesis se omiten.

Y uno más para 87:

while fprintf('FEWER CODERS%sEASIER COMMUNICATION%sFASTER CODING%s',k=' MEANS ',k,k)end

Bueno, no digas que no lo intenté :)


Sabes que fprintfrecicla argumentos ¿verdad? Su última versión puede tener 6 bytes menos. ¡ Pruébelo en línea!
Sanchises

2

Alice , 70 bytes

" SNAEM "k"SREDOC REWEF"e0j"GNIDOC RETSAF"e0j"NOITACINUMMOC REISAE"d&o

Pruébalo en línea!

Explicación

Desafortunadamente, la reutilización de MEANS(con espacios) solo ahorra un solo byte en lugar de imprimir todo de una sola vez. En consecuencia, extraer el en ER COrealidad costaría un byte (o probablemente más, porque sería un poco más caro extraer otra sección).

" SNAEM "                Push the code points of " MEANS " in reverse.
k                        If there is a return address on the return address stack (which
                         there isn't right now), pop it and jump there.
"SREDOC REWEF"           Push the code points of "FEWER CODERS" in reverse.
e0j                      Jump to the beginning of the line, pushing the location of the
                         j to the return address stack. Hence, we push the code points
                         of " MEANS " again, but then the k pops the return address and
                         jumps back here.
"GNIDOC RETSAF"          Push the code points of "FASTER CODING" in reverse.
e0j                      Jump to the beginning of the line again.
"NOITACINUMMOC REISAE"   Push the code points of "EASIER COMMUNICATION" in reverse.
d                        Push the stack depth.
&o                       Print that many bytes from the top of the stack.
                         Afterwards the IP wraps around to the first column and the
                         program starts over.

2

C #, 102 bytes

_=>{for(;;)System.Console.Write("EASIER COMMUNICATION{0}FASTER CODING{0}FEWER CODERS{0}"," MEANS ");};

1

Pyth , 69 bytes

Wp"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS 

Pruébalo en línea!

Cómo funciona

Wp"...
W       while the following is true: (do nothing)
 p      print the following and return the following
  "...


1

Java (OpenJDK 9) , 114 bytes

static void f(){while(1>0)System.out.print("FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS ");}

Pruébalo en línea! Detenga la ejecución después de unos segundos porque no sabe cuándo detenerse.


Los envíos deben ser programas o funciones completos.
Kritixi Lithos

@KritixiLithos ¿Puede ser una lambda anónima?
Totalmente humano

@totallyhuman Sí. En otros idiomas está permitido; No veo por qué Java debería ser una excepción.
wizzwizz4

¿Por qué detener la ejecución? Simplemente desactive deshabilitar caché de salida .
Adám

3
Pero puedes hacerlofor(;;)
Brian McCutchon,

1

C, 86 bytes

f(){printf("FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS ");f();}

Véalo trabajar en línea .


Esto depende de que el compilador haga la optimización de la cola, pero supongo que la mayoría lo hace.
Wayne Conrad

@WayneConrad Es una respuesta válida sin esa optimización. La recursión infinita satisface el requisito: producir una salida que se repite infinitamente
2501

Sin la optimización de la cola, la pila se desbordará eventualmente. Intente compilarlo gcc(use las opciones predeterminadas, de modo que no se optimice la cola), y cuando lo ejecute, redirija la salida a / dev / null para acelerar el proceso. Seg seg culpa. Con la opción '-O2', que permite la optimización de llamadas de cola, se ejecuta para siempre como se esperaba.
Wayne Conrad

@WayneConrad La recursión infinita es conceptual, infinita. La pregunta no se limita a una definición práctica de infinito. Por consenso común, la recursión infinita se repite infinitamente, en otras palabras, ninguna lógica dentro del programa la detendrá.
2501

No estoy declarando que su solución no sea válida. Todo lo que quería señalar es que, para ejecutar correctamente, se necesita un poco de cooperación del compilador.
Wayne Conrad


1

Perl 6 ,  81 80  79 bytes

print ('EASIER COMMUNICATION','FASTER CODING','FEWER CODERS'X'MEANS'),' 'for ^Inf

Intentalo

loop {print ('EASIER COMMUNICATION','FASTER CODING','FEWER CODERS'X'MEANS'),' '}

Intentalo

loop {print [~] 'EASIER COMMUNICATION','FASTER CODING','FEWER CODERS'X'MEANS '}

Intentalo


1

MATL , 68 bytes

`'EASIER COMMUNICATION*FASTER CODING*FEWER CODERS*'42' MEANS 'Zt&YDT

Pruébalo en línea!

Explicación

`                                                     % Do...while
  'EASIER COMMUNICATION*FASTER CODING*FEWER CODERS*'  %   Push this string
  42                                                  %   Push 42 (ASCII for '*')
  ' MEANS '                                           %   Push this string  
  Zt                                                  %   String replacement
  &YD                                                 %   printf to STDOUT
  T                                                   %   Push true as loop condition
                                                      % End (implicit)

1

Axioma, 92 89 bytes

repeat fortranLiteral"EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS "

inserte en una línea a la ventana de Axiom. Posible hay una función más corta que "fortranLiteral" que no escribe "\ n"


1

Braingolf , 78 bytes

"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS "[!@66<1+>]

o

Braingolf , 77 bytes [no competidor]

"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS "[!&@<1+>]

Este no es competitivo ya que tuve que corregir 2 errores relacionados con el uso del modificador codicioso ( &) con el operador de impresión de caracteres ( @)


1

En blanco , 267 bytes

[70][69][87][69][82][32][67][79][68][69][82][83][32][77][69][65][78][83][32][69][65][83][73][69][82][32][67][79][77][77][85][78][73][67][65][84][73][79][78][32][77][69][65][78][83][32][70][65][83][84][69][82][32][67][79][68][73][78][71][32][77][69][65][78][83][32]{p}

Empuja FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANSa la pila, luego la imprime. Nunca termina como no{@}

También es un hecho divertido, utilicé el siguiente script de Braingolf para generar este código

"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS "l>[<$_<91+2^9-@_ 91+2^7-@l>]"{p}"@3

1

Groovy 79 bytes

m=" MEANS";for(;;)print"EASIER COMMUNICATION$m FASTER CODING$m FEWER CODERS$m "

Utiliza la interpolación de cuerdas de groovy.


1

PowerShell , 100 97 bytes

for(){"EASIER COMMUNICATION","FASTER CODING","FEWER CODERS"|%{Write-Host -NoNewLine "$_ MEANS "}}

Pruébalo en línea!


Respuesta anterior:

PowerShell , 100 bytes

while(1){"EASIER COMMUNICATION","FASTER CODING","FEWER CODERS"|%{Write-Host -NoNewLine "$_ MEANS "}}

Pruébalo en línea!

PowerShell es un poco complicado para esto porque las formas más dignas de salida a la consola también insertan una nueva línea. Write-Hostes requerido por esto. Sin embargo, todavía demuestra cómo la canalización puede acortar la huella de codificación.

Deberá detener la ejecución después de un corto tiempo porque no volverá, ya que es un bucle infinito.

Editar: recortó 3 bytes cambiando un whilebucle a uno for.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.