Une communication plus facile signifie un codage plus rapide signifie moins de codeurs signifie…


28

Mon père qui était un très bon APLer et qui m'a appris toutes les bases de l'APL (et bien plus), est décédé ce jour-là, il y a cinq ans. En préparation pour 50 ans d'APL , j'ai trouvé cette lettre de brevet (traduite pour la commodité de ceux qui ne lisent pas le danois) pour un logo manuscrit. Cela explique une raison majeure pour qu'APL ne gagne jamais une large base d'utilisateurs - une raison qui s'applique bien sûr à toutes les langues de golf incroyables de cette communauté:


A 3497/77 Req. 29 e août 1977 à 13

EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS …

Henri Brudzewsky, société de conseil en ingénierie, Mindevej 28, Søborg,

classe 9 , y compris les ordinateurs, en particulier les ordinateurs codés APL,
classe 42: société d'agence de services informatiques, en particulier lors de l'utilisation d'ordinateurs codés APL.


Tâche

Produisez une sortie répétée à l'infini du texte EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS sans nouvelle ligne. Vous pouvez commencer le texte par EASIERou FASTERou FEWER.


J'ai mal interprété votre défi et ce que j'ai fait, c'est i.imgur.com/qKnTj3q.png !
sergiol

@sergiol Presque valide ici .
Adám

Le lien vers la lettre de brevet est mort.
pppery

@pppery Merci. Mis à jour.
Adám

Réponses:


14

05AB1E , 25 octets

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

Essayez-le en ligne!

Explication:

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

13
Honnêtement, je ne comprends pas pourquoi les solutions Python obtiennent des explications et celle-ci non. Que se passe-t-il ici?
nluigi

3
@nluigi black magic
Nic Robertson

2
Il est physiquement impossible de savoir ce qui se passe ici si vous ne connaissez pas la langue, cela vous dérangerait de donner une explication s'il vous plaît.
George Willcox

1
@nluigi [signifie «début de boucle infinie», ‘æƒËRSˆ¾¥ƒŽÁˆ¾¡ŸÂ ‘c'est une version compressée de EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS , et ?signifie imprimer sans retour à la ligne.
Okx

1
@Leo C'est largement sous-expliqué. D'abord, vous allez dans ce fichier. À droite de certains des caractères étendus, vous pouvez voir un nombre. S'il s'agit d'un chiffre, complétez avec un zéro non significatif. Deux de ces caractères forment un nombre à 4 chiffres avec des zéros de tête possibles. Ensuite, ce nombre est utilisé comme index de base zéro pour ce dictionnaire. Le comportement de chaque mot dépend alors des guillemets que vous pouvez trouver sur le premier fichier que j'ai lié en cherchant compressed.
Erik the Outgolfer

41

SVG (HTML5), 336 octets

<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>

Edit: Certaines personnes ont trouvé que la police ne leur convenait pas très bien alors voici une version qui vous permet quelques ajustements de pixels:

<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>


C'est beau, mais pouvez-vous le faire à l'envers (haut des lettres tournées vers l'extérieur du cercle) et tout en majuscules?
Adám

@ Adám Comment ça? J'ai dû modifier légèrement les dimensions, mais c'est le même nombre d'octets.
Neil

1
@ Adám, vous devriez; c'est ce que je pensais que ce défi allait être quand je l'ai lu pour la première fois.
Shaggy

8
Il manque un espace dans "MEANSEASIER", présent entre d'autres mots.
ShreevatsaR

1
@ShreevatsaR J'ai ajouté une deuxième version qui comprend une zone de texte pour faire de petits ajustements, peut-être que cela aide.
Neil

13

PHP, 76 octets

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

Essayez-le en ligne!


4
Uniquement en PHP ....
user253751

@immibis Que voulez-vous dire?
Jörg Hülsermann

Je veux dire que vous avez réussi à démontrer au moins 3 "bizarreries de conception" PHP dans une ligne de code. Cette ligne de code illustre pourquoi PHP est considéré comme nuisible.
user253751

1
@immibis "mimimi n'aime pas php" Je pensais que nous avions dépassé ce point pendant une décennie. :-)
Zsolt Szilagy

4
@ Arc676 Premièrement, un nom sans signe dollar est supposé être une constante. Deuxièmement, une constante non définie est supposée être elle-même une chaîne. Donc, dans ce code EASI0MMUNICATION1FAST0DING1FEW0DERS1est traité comme une chaîne "EASI0MMUNICATION1FAST0DING1FEW0DERS1". Troisièmement, strtrattend un tableau associatif (une "carte" ou un "dictionnaire" dans d'autres langues), mais ce code est passé dans un tableau régulier, donc il traite le tableau régulier comme un tableau associatif avec les clés 0 et 1. Enfin, ces entiers 0 et 1 est traité comme des chaînes "0"et "1"parce que, vous l'avez deviné, la fonction a besoin de chaînes.
onde

11

Vim 69 octets

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

Je viens adore quand une séquence de commande simple fait pour Vim une solution de golf de code décent. :-D
DevSolar

7

HTML, 122 octets.

Désolé, je ne peux pas m'en empêcher.

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


pourquoi l'énorme espacement des mots?
2017

@ Adám Parce qu'un chapiteau laisse toujours cette largeur entre les itérations (c'est-à-dire sa propre largeur). Et je ne pouvais pas trouver un moyen de réduire cela, alors j'ai dû improviser et mettre la même quantité d'espace entre chaque mot également.
M. Lister

Vous ne pouvez pas supprimer la balise de fin?
NoOneIsHere

@NoOneIsHere Comment cela aiderait-il? Ou vouliez-vous dire que cela ralentirait de 10 octets? Je ne suis pas sûr de vouloir faire ça; la balise de fin n'est pas réellement facultative.
M. Lister du

@MrLister, je voulais dire jouer au golf. Je pensais que les documents HTML à une seule balise n'avaient pas besoin de la balise de fin.
NoOneIsHere

6

Python 2 , 82 81 octets

-1 octet grâce à Leaky Nun.

Je fais probablement quelque chose de mal, mais il est vraiment tard, alors meh. Notez la virgule de fin.

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

Essayez-le en ligne!

Une autre solution, 85 octets

Je peux probablement jouer au golf plus loin.

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

Essayez-le en ligne!


1
Vous pouvez supprimer le deuxième espace.
Leaky Nun

@LeakyNun Comment ai-je pu manquer ça? o0 Merci!
totalement humain

Dans le second, vous pouvez déplacer les espaces dans la chaîne de format.
wizzwizz4

@ wizzwizz4 Les espaces blancs de premier plan sont interdits.
totalement humain

2
@totallyhuman Actuellement, vous avez un bogue où il affichera "MOINS DE CODERS DE COMMUNICATION MEANSEASIER COMMUNICATION MEANSFASTER CODING MEANSFEWER ...". Si vous changez la chaîne de format en '%sER CO%s MEANS 'et supprimez les espaces des éléments de format, ce sera plus golfique et fonctionnera correctement.
wizzwizz4

5

Gelée , 33 29 octets

4 octets grâce à Erik l'Outgolfer.

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

Essayez-le en ligne!


1) Vous pouvez utiliser une meilleure chaîne compressée: “©%5ÐƬwȮh¬Þ6.⁷ḷḊḥṫɠlḶṀġß»(encore besoin d'utiliser Œuet ;⁶) 2) Vous pouvez utiliser à la ßplace de 1¿.
Erik the Outgolfer

5

Brachylog , 70 octets

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

Essayez-le en ligne!

Comment ça marche

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

4

HTML / CSS (Firefox uniquement), 179 177 183 176 173 octets

<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)}

Certes, loin des scores les plus bas, je pensais juste que ce serait amusant d'obtenir une répétition infinie en HTML / CSS, sans aucun JS impliqué :)

Journal des modifications:

  • Suppression des guillemets autour de l'attribut id
  • ajout d'une répétition d'arrière-plan "ronde" pour étirer le texte afin qu'il s'enroule correctement
  • changé en sortie sur une seule ligne
  • remplacer le width:100%style par right:0pour économiser 3 octets

Bien essayé, mais cela recommence à chaque ligne. OP: sans nouvelle ligne.
Adám

Toutes les réponses imprimées sur un terminal seront encapsulées à la fin de la ligne. Essayez de faire un zoom arrière; vous verrez que cela continue indéfiniment horizontalement, il est juste "masqué" par la fenêtre du navigateur.
user371366

De plus, j'ai perdu quelques octets pour que l'image répétée "arrondisse" afin qu'elle se
termine de

L'emballage est très bien, mais pas le vôtre. Il pourrait être considéré comme "imprimant" une infinité de lignes infinies. Limitez simplement l'arrière-plan à une seule ligne.
2017

1
Oui. j'ai pensé que je devrais mettre repeat no-repeatou ; background-repeat: repeat-x, mais j'ai compris comment l'éviter. Il s'avère que le respect des spécifications économise des octets!
user371366



3

LOLCODE , 116 octets

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

Essayez-le en ligne!


Je ne connais pas LOLCODE. Comment cela sort-il pour toujours?
Esolanging Fruit

@ Challenger5 IM IN YR ...et IM OUTTA YR ...forme une boucle infinie.
Leaky Nun

1
Vous pouvez supprimer HAI et KTHXBYE car les compilateurs n'en ont pas besoin. De plus, aucune exclamation à la fin de VISIBLE.
OldBunny2800

@ OldBunny2800 Quelle version de LOLCODE utilisez-vous? Dans cette version, la fin !supprime le retour chariot après l'impression.
Arc676

Oh, j'ai oublié la règle du non-saut de ligne. Je ne savais pas que LOLCODE avait un moyen de le faire!
OldBunny2800

3

Rubis, 77 octets

l'attribution " MEANS "à une variable a enregistré tous les 1 octet :-)

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 `

Functioning Alternative, 100 bytes

"Functioning" here meaning "won't crash your browser" (for a while, at least)!

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

1
Your code does not work: document.write`EASIER COMMUNICATION${m=" MEANS "}FASTER CODING${m}FEWER CODERS`+m is equivalent to document.write([ 'EASIER COMMUNICATION', 'FASTER CODING', 'FEWER CODERS' ], ' MEANS ', ' MEANS ') + ' MEANS ', which 1) will convert all arguments to strings and concatenate (printing EASIER COMMUNICATION,FASTER CODING,FEWER CODERS MEANS MEANS ), and 2) won't include the last ' MEANS ' anyways since it's outside the function call...
Frxstrem


2

Octave, 86 bytes

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

Explanation:

This is fairly self-explanatory. The only real "trick" here is to use while fprintf. When fprintf is given a return argument, it will return the number of characters printed, and all non-zero numbers are considered true in Octave, so the loop condition will always be true.


I desperately tried to make the more interesting approach shorter, but it turned out to be 9 bytes longer, unfortunately:

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

This tries to insert the strings 'ER CO' and ' MEANS' into the string at the correct locations, using direct indexing where 'ababab'-96 is a shorter version of [1 2 1 2 1 2].

This was a bit shorter (93 bytes), but still longer than the naive approach

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

And another one (89 bytes), using Level River St's approach:

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

This should work in theory, for one less byte than the original solution, but it fails for some strange reason:

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

This uses the buggy feature that fprintf('abc def') is equivalent to fprintf"abc def". The end must be on the next line, but it's still one byte shorter since two parentheses are skipped.

And one more for 87:

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

Well, don't say I didn't try :)


You do know that fprintf recycles arguments right? Your last version can be 6 bytes less, Try it online!
Sanchises

2

Alice, 70 bytes

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

Try it online!

Explanation

Unfortunately, reusing the MEANS (with spaces) only saves a single byte over just printing the whole thing in one go. Consequently, extracting the ER CO would actually cost a byte (or probably more, because it would be slightly more expensive to extract another section).

" 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 

Try it online!

How it works

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 ");}

Try it online! Stop the execution after a few seconds because it does not know when to stop.


Submissions have to be full programs or functions.
Kritixi Lithos

@KritixiLithos Can it be an anonymous lambda?
totallyhuman

@totallyhuman Yes. In other languages that's allowed; I don't see why Java should be an exception.
wizzwizz4

Why stop execution? Just untick disable output cache.
Adám

3
But you can do for(;;)
Brian McCutchon

1

C, 86 bytes

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

See it work online.


This depends upon the compiler doing tail-call optimization, but I guess most do.
Wayne Conrad

@WayneConrad It is a valid answer without that optimization. Infinite recursion satisfies the requirement: Produce infinitely repeating output
2501

Without tail call optimization, the stack will overflow eventually. Try compiling it with gcc (use default options, so no tail call optimization), and when you run it, redirect output to /dev/null in order to speed up the process. It'll seg fault. With the '-O2' option, which enables tail call optimization, it runs forever as intended.
Wayne Conrad

@WayneConrad Infinite recursion is conceptually, infinite. The question doesn't constrain to a practical definition of infinite. By common consensus, infinite recursion is infinitely repeating, in other words, no logic within the program will stop it..
2501

I am not declaring that your solution is invalid. All I meant to point out is that, in order to execute properly, a little cooperation is needed from the compiler.
Wayne Conrad


1

Perl 6,  81 80  79 bytes

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

Try it

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

Try it

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

Try it


1

MATL, 68 bytes

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

Try it online!

Explanation

`                                                     % 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

Axiom, 92 89 bytes

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

insert in one line to Axiom window. Possible there is one function shorter than "fortranLiteral" that not write "\n"


1

Braingolf, 78 bytes

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

or

Braingolf, 77 bytes [non-competing]

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

This one's non-competing as I had to fix 2 bugs regarding using the greedy modifier (&) with the char print operator (@)


1

Blank, 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}

Pushes FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS to the stack, then prints it. Never terminates as no {@}

Also fun fact, I used the following Braingolf script to generate this code

"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 "

Uses groovy's string interpolation.


1

PowerShell, 100 97 bytes

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

Try it online!


Older answer:

PowerShell, 100 bytes

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

Try it online!

PowerShell is a little tricky for this because most dignified ways of outputting to the console also insert a new line. Write-Host is required because of this. However, it still demonstrates how pipelining can shorten the coding footprint.

You will need to stop the execution after a short time because it will not return as it is an infinite loop.

Edit: shaved off 3 bytes by changing a while loop to a for loop.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.