Comunicação mais fácil significa codificação mais rápida significa menos codificadores significa ...


28

Meu pai, que era realmente um bom APLer e me ensinou todos os conceitos básicos do APL (e muito mais), faleceu neste dia, cinco anos atrás. Em preparação para os 50 anos de APL , encontrei esta carta de patente (traduzida para a conveniência de quem não lê dinamarquês) para um logotipo manuscrito. Explica uma das principais razões para a APL nunca obter uma grande base de usuários - uma razão que, obviamente, se aplica a todas as incríveis linguagens de golfe desta comunidade:


A 3497/77 Req. 29 th agosto 1977 em 13

COMUNICAÇÃO MAIS FÁCIL SIGNIFICA CÓDIGO MAIS RÁPIDO, MENOS CÓDIGOS, CÓDIGOS…

Henri Brudzewsky, empresa de consultoria em engenharia, Mindevej 28, Søborg,

classe 9 , incluindo computadores, especialmente computadores com código APL;
classe 42: empresa de serviços de TI, especialmente durante o uso de computadores com código APL.


Tarefa

Produza uma saída infinita de repetição do texto EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS sem novas linhas. Você pode começar o texto com EASIERou FASTERou FEWER.


Eu interpretei mal seu desafio e o que fiz foi i.imgur.com/qKnTj3q.png !
sergiol

@sioliol Quase válido por aqui .
Adám

O link para a carta de patente está morto.
pppery 20/10

@pppery Obrigado. Atualizada.
Adám 20/10

Respostas:


14

05AB1E , 25 bytes

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

Experimente online!

Explicação:

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

13
Honestamente, não entendo por que as soluções Python obtêm explicações e essa não. O que está acontecendo aqui no mundo?
Nluigi 7/17

3
@nluigi black magic
Nic Robertson

2
É fisicamente impossível saber o que está acontecendo aqui, se você não conhece o idioma, você se importaria em dar uma explicação, por favor.
George Willcox

1
@nluigi O [meio 'início do loop infinito', ‘æƒËRSˆ¾¥ƒŽÁˆ¾¡ŸÂ ‘é uma versão compactada EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS e ?significa imprimir sem nova linha.
Okx

1
@ Leo Isso é muito pouco explicado. Primeiro, você vai para este arquivo. À direita de alguns dos caracteres estendidos, você pode ver um número. Se for um dígito, use um zero à esquerda. Dois desses caracteres formam um número de 4 dígitos com possíveis zeros à esquerda. Em seguida, esse número é usado como um índice baseado em zero para este dicionário. O comportamento de cada palavra depende das aspas, que você pode encontrar no primeiro arquivo que vinculei pesquisando 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>

Edit: Algumas pessoas descobriram que a fonte não se encaixa bem nelas, então aqui está uma versão que permite alguns pixels 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>


Isso é lindo, mas você pode fazer isso de dentro para fora (as letras voltadas para fora do círculo) e todas as letras maiúsculas?
Adám

@ Adám Como é isso? Eu tive que ajustar um pouco as dimensões, mas é a mesma contagem de bytes.
719 Neil

1
@ Adám, você deveria; era assim que eu pensava que esse desafio seria quando o li pela primeira vez.
Shaggy

8
Há um espaço ausente em "MEANSEASIER", que está presente entre outras palavras.
ShreevatsaR

1
@ShreevatsaR Adicionei uma segunda versão que inclui uma caixa de texto para fazer pequenos ajustes, talvez isso ajude.
819 Neil

13

PHP, 76 bytes

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

Experimente online!


4
Apenas em PHP ....
user253751

@immibis Como assim?
Jörg Hülsermann

Quero dizer, você conseguiu demonstrar pelo menos três "peculiaridades de design" do PHP em uma linha de código. Essa linha de código é uma ilustração do motivo pelo qual o PHP é considerado prejudicial.
User253751

1
@immibis "mimimi não gosto de php" Pensei que estávamos além desse ponto por uma década. :-)
Zsolt Szilagy

4
@ Arc676 Primeiro, presume-se que um nome sem um cifrão seja uma constante. Segundo, uma constante indefinida é assumida como sendo uma string. Então neste códigoEASI0MMUNICATION1FAST0DING1FEW0DERS1 é tratado como a sequência "EASI0MMUNICATION1FAST0DING1FEW0DERS1". Terceiro, strtrespera uma matriz associativa (um "mapa" ou "dicionário" em outros idiomas), mas esse código é transmitido em uma matriz regular, por isso trata a matriz regular como uma matriz associativa com as teclas 0 e 1. Por fim, esses números inteiros 0 e eu sou tratado como strings "0"e "1"porque, você adivinhou, a função precisa de strings.
Wavemode

11

Vim 69 bytes

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

Eu simplesmente adoro quando uma sequência direta de comandos do Vim cria uma solução decente de código de golfe. :-D
DevSolar

7

HTML, 122 bytes.

Desculpe, não posso me ajudar.

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


por que o enorme espaçamento entre palavras?
Adám 8/17/17

@ Adám Porque uma marca de seleção sempre deixa essa quantidade de largura entre as iterações (ou seja, sua própria largura). E não consegui encontrar uma maneira de reduzir isso, então tive que improvisar e colocar a mesma quantidade de espaço entre cada palavra também.
Sr. Lister

Você não pode remover a tag final?
NoOneIsHere

@NoOneIsHere Como isso ajudaria? Ou você quis dizer que reduziria em 10 bytes? Não tenho certeza se quero fazer isso; a tag final não é realmente opcional.
Sr. Lister

@ MrLister eu quis dizer jogar golfe. Eu pensei que documentos HTML de marca única não precisavam da marca final.
NoOneIsHere

6

Python 2 , 82 81 bytes

-1 byte graças a Leaky Nun.

Provavelmente estou fazendo algo errado, mas é muito tarde, então meh. Observe a vírgula à direita.

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

Experimente online!

Outra solução, 85 bytes

Provavelmente eu posso jogar golfe ainda mais.

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

Experimente online!


1
Você pode excluir o segundo espaço.
Freira vazando

@LeakyNun Como eu senti falta disso? o0 Obrigado!
totallyhuman

No segundo, você pode mover os espaços para a string de formato.
Wizzwizz4

@ wizzwizz4 O espaço em branco inicial não é permitido.
totallyhuman

2
@totallyhuman Atualmente, você tem um bug no qual ele exibirá "MENOS CODERS MEANEASIER COMMUNICATION MEANSFASTER COANDO MEANSFEWER ...". Se você alterar a sequência de formatação para '%sER CO%s MEANS 'e remover os espaços dos itens de formatação, ela será mais eficiente e funcionará corretamente.
Wizzwizz4

5

Geléia , 33 29 bytes

4 bytes graças a Erik, o Outgolfer.

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

Experimente online!


1) Você pode usar uma string compactada melhor: “©%5ÐƬwȮh¬Þ6.⁷ḷḊḥṫɠlḶṀġß»(ainda precisa usar Œue ;⁶) 2) Você pode usar em ßvez de 1¿.
Erik the Outgolfer

5

Braquilog , 70 bytes

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

Experimente online!

Como funciona

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

4

HTML / CSS (apenas Firefox), 179 177 183 176 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 longe das pontuações mais baixas, eu apenas pensei que seria divertido obter uma repetição infinita em HTML / CSS, sem nenhum JS envolvido :)

Changelog:

  • Citações removidas em torno do atributo id
  • adicionada repetição em segundo plano "redonda" para esticar o texto para que ele se enrole corretamente
  • alterado para saída de linha única
  • substitua o width:100%estilo por right:0para salvar 3 bytes

Boa tentativa, mas isso começa de novo em todas as linhas. OP: sem novas linhas.
Adám 8/17/17

Qualquer uma das respostas impressas em um terminal será quebrada no final da linha. Tente diminuir o zoom; você também continuará na horizontal para sempre, apenas "escondido" pela janela do navegador.
User371366 8/17/17

Além disso, eu perdi alguns bytes com a imagem repetir "off rodada" para que ele envolve mais convincente, espero que ajude
user371366

A embalagem é boa, mas a sua não. Pode ser visto como "imprimindo" infinitamente muitas linhas infinitas. Apenas restrinja o plano de fundo a uma única linha.
Adám 8/17/17

1
sim. Eu pensei que teria que colocar repeat no-repeatou ; background-repeat: repeat-x, mas descobri como evitá-lo. Acontece que obedecer às especificações salva bytes!
User371366 8/17/17



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

Experimente online!


Eu não estou familiarizado com LOLCODE. Como isso produz para sempre?
Esolanging Fruit

@ Challenger5 IM IN YR ...e IM OUTTA YR ...forme um loop infinito.
Freira vazando

1
Você pode remover o HAI e o KTHXBYE, pois os compiladores não precisam deles. Além disso, nenhuma exclamação no final de VISÍVEL.
precisa saber é o seguinte

@ OldBunny2800 Qual versão do LOLCODE você está usando? Na presente versão, o arrasto !suprime o retorno do carro depois da impressão.
Arc676

Ah, esqueci a regra de não quebra de linha. Eu não sabia que o LOLCODE tinha uma maneira de fazer isso!
precisa saber é o seguinte

3

Ruby, 77 bytes

atribuir " MEANS "a uma variável salvou todos os 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 funcionamento, 100 bytes

"Funcionar" aqui significa "não trava o navegador" (por um tempo, pelo menos)!

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

1
Seu código não funciona: document.write`EASIER COMMUNICATION${m=" MEANS "}FASTER CODING${m}FEWER CODERS`+mé equivalente a document.write([ 'EASIER COMMUNICATION', 'FASTER CODING', 'FEWER CODERS' ], ' MEANS ', ' MEANS ') + ' MEANS ', que 1) converterá todos os argumentos em seqüências de caracteres e concatenará (impressão EASIER COMMUNICATION,FASTER CODING,FEWER CODERS MEANS MEANS ) e 2) não incluirá o último de ' MEANS 'qualquer maneira, pois está fora da chamada de função ...
Frxstrem


2

Oitava, 86 bytes

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

Explicação:

Isso é bastante auto-explicativo. O único "truque" real aqui é usar while fprintf. Quando fprintfé fornecido um argumento de retorno, ele retornará o número de caracteres impressos e todos os números diferentes de zero serão considerados truena oitava, portanto, a condição do loop sempre será verdadeira.


Tentei desesperadamente tornar a abordagem mais interessante mais curta, mas acabou sendo 9 bytes a mais, infelizmente:

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

Isso tenta inserir as strings 'ER CO'e ' MEANS'as strings nos locais corretos, usando a indexação direta, em que 'ababab'-96há uma versão mais curta do[1 2 1 2 1 2] .

Isso foi um pouco menor (93 bytes), mas ainda maior do que a abordagem ingênua

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

E outro (89 bytes), usando a abordagem da Level River St:

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

Isso deve funcionar em teoria, por um byte a menos que a solução original, mas falha por algum motivo estranho:

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

Isso usa o recurso de buggy fprintf('abc def')equivalente a fprintf"abc def". Ele enddeve estar na próxima linha, mas ainda é um byte mais curto, pois dois parênteses são ignorados.

E mais um para 87:

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

Bem, não diga que eu não tentei :)


Você sabe que fprintfrecicla argumentos, certo? Sua última versão pode ter 6 bytes a menos. Experimente online!
Sanchises 23/09

2

Alice , 70 bytes

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

Experimente online!

Explicação

Infelizmente, a reutilização de MEANS(com espaços) economiza apenas um byte em apenas imprimir a coisa toda de uma só vez. Conseqüentemente, extrair o ER COrealmente custaria um byte (ou provavelmente mais, porque seria um pouco mais caro extrair outra seção).

" 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

Pitão , 69 bytes

Wp"FEWER CODERS MEANS EASIER COMMUNICATION MEANS FASTER CODING MEANS 

Experimente online!

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

Experimente online! Pare a execução após alguns segundos, porque ele não sabe quando parar.


As submissões devem ser programas ou funções completos.
Kritixi Lithos

@KritixiLithos Pode ser um lambda anônimo?
totallyhuman

@totallyhuman Sim. Em outros idiomas, isso é permitido; Não vejo por que o Java deve ser uma exceção.
Wizzwizz4

Por que parar a execução? Desmarque a opção Desativar cache de saída .
Adám

3
Mas você pode fazerfor(;;)
Brian McCutchon

1

C, 86 bytes

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

Veja como funciona online .


Isso depende do compilador fazer a otimização da chamada de cauda, ​​mas acho que a maioria faz.
Wayne Conrad

@WayneConrad É uma resposta válida sem essa otimização. Satisfaz recursão infinita a exigência: Produce infinitamente repetindo saída
2501

Sem a otimização da chamada de cauda, ​​a pilha transbordará eventualmente. Tente compilá-lo com gcc(use as opções padrão, para que não haja otimização de chamada de cauda) e, quando você executá-lo, redirecione a saída para / dev / null para acelerar o processo. Seg seg falha. Com a opção '-O2', que permite a otimização da chamada de cauda, ​​ela funciona para sempre conforme o esperado.
Wayne Conrad

@WayneConrad A recursão infinita é conceitualmente infinita. A questão não se restringe a uma definição prática de infinito. Por consenso comum, a recursão infinita se repete infinitamente, em outras palavras, nenhuma lógica dentro do programa o interromperá.
2501/08/17

Não estou declarando que sua solução é inválida. Tudo o que eu queria salientar é que, para executar corretamente, é necessária uma pequena cooperação do compilador.
Wayne Conrad

1

bc , 76 bytes

while(1)"EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS "

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.