Wikipedia: Paradoxo da dicotomia de Zenão
Um número infinito de matemáticos entra em um bar. O primeiro pede uma cerveja. O segundo pede meia cerveja. O terceiro pede um quarto de cerveja. O barman os para, bebe duas cervejas e diz: "Vocês são todos um bando de idiotas".
Imprima a série a seguir enquanto o programa for executado, com o denominador de cada item multiplicado por dois a cada vez:
1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ...
À medida que se n
aproxima do infinito, a soma dessa sequência se aproxima 2
.
Regras
Não, você não pode imprimir 2
.
Você não pode imprimir 1/1
como o primeiro item.
Você pode remover espaços 1+1/2+...
ou adicionar espaços 1 + 1 / 2 + ...
conforme necessário.
Você pode usar novas linhas em vez de espaços como um delimitador devido à demanda popular.
Você pode acrescentar um .
número constante de 0
s ao denominador, se necessário.
"Infinitamente" significa que não há atrasos desnecessários, e pelo maior tempo possível limitado pelas especificações do sistema atual (variável), mas não limitado pelo idioma atual.
Aplicam-se brechas padrão .
Isso é código-golfe , então a resposta mais curta em bytes vence.
fonte
+1/
s formaria apenas uma linha diagonal. No entanto, os comprimentos dos denominadores estão mudando linearmente (até o arredondamento): o número de dígitos de2^n
é aproximadamenten log(2)/log(10)
. Essa mudança linear se traduz em uma mudança linear na posição relativa de cada uma+1/
em relação à anterior, que é igual a uma mudança quadrática na posição absoluta .Respostas:
05AB1E ,
109 bytesGuardado 1 byte graças a Erik the Outgolfer
Experimente online!
Explicação
fonte
[No?…+1/?
«
vez de,J
mas isso também funciona.Python 2 , 30 bytes
-5 graças a Erik, o Outgolfer
Experimente online!
fonte
Gelatina , 12 bytes
Experimente online!
fonte
Pitão , 10 bytes
Experimente online!
fonte
APL (Dyalog Unicode) , 15 bytes
Mais divertido se
⎕FR
( M ponto-loating R ePresentation) é1287
(de 128 bits decimal) e⎕PP
( P rint P recision) é de 34.Experimente online!
{
…}1
Aplique a seguinte função no número 1:⎕←⍵'+1/'
imprime o argumento e a string⊃
escolha o primeiro (ou seja, o argumento)2×
dobrar isso∇
recursão de chamada final (otimizada, para que possa ser repetida infinitamente)fonte
C (gcc) , 60 bytes
Aumenta o limite de 64 bits não assinado.
Experimente online!
Este continua para sempre; (é o menor possível)
C (TCC) ,
312264255251233231208204195190188170 bytesExperimente online!
Aqui está a versão não tão golfe;
fonte
Bash , 33 bytes
Experimente online!
Alterar
print
paraprintf
eecho
paraprintf
evitar nova linhafonte
printf 1
também evita a nova linha, não?+1/inf
partir do 1024º período. :-(dc,
1918 bytesExplicação
Nós empurrar
1
e[rdp+[+1/]Prdx]
na pilha. Em seguida, duplicamos e executamos[rdp+[+1/]Prdx]
. A primeira coisa que faz é girar a pilha (r
) para que o valor fique no topo.dp+
imprime o valor e se adiciona (para multiplicar por 2).[+1/]P
imprime o invariante e+1/
, em seguida, rotacionamos os argumentos para que a definição da macro salva fique no topo, duplique e inicie novamente.Notas
O GNU
dc
normalmente quebra em 70 colunas. Para substituir isso e obter uma linha infinita, adicioneDC_LINE_LENGTH=0
às suas variáveis de ambiente.Saída (parcial)
...
...
...
fonte
dp
em vez deddn
para salvar um bytedn
evitar a introdução de uma nova linha, mas considereip
(ao custo da produção mais feia). Na verdade, pensando bem, não é tão feio, afinal.GolfScript , 19 bytes
Experimente online!
fonte
CJam , 14 bytes
Experimente online!
fonte
> <> , 14 bytes
Experimente online!
fonte
Pitão, 10 bytes
Z
começa como zero.~hyZ
post atribui o valor de2*Z+1
aZ
. Assim,Z
torna0, 1, 3, 7, 15, ...
- se repetidas iterações sucessivas.h
depois imprime o valor um maior.#
executa o loop infinito e"+1/
obtém a formatação correta.fonte
JavaScript (ES6) ,
3634 bytesExperimente online!
Inspirado pela resposta de Jake Taylor .
Observe que isso é limitado pelo idioma, pois
a
é uma variável de ponto flutuante, não um número inteiro.-2 bytes graças a @Stefnotch .
fonte
for(a=.5;;)console.log`${a*=2}+1/`
Porém, sua solução é limitada pelo idioma, porque a é um flutuador, não um número inteiro grande. (O desafio diz que não deve ser limitada pela linguagem, mas sim por especificações do sistema.)for(a=1;;a*=2)console.log(a+"+1/")
Ruby,
2725 bytesTry it online!
fonte
Java,
107102 bytesz=null
exists to shorten theo=java.math.BigInteger.ONE
intoz=null,o=z.ONE
, saving 12 bytes.z.ONE
will not throw aNullPointerException
because we access a static member and not an instance one.Using
int
shortens the code, but fails to comply after 32 iterations.Saves
n.compareTo(o)>0
turned inton.max(o)==o
, thanks to an idea given by @Shufflepantsfonte
int
and all other primitive types are limited at the language level. Also, theBigInteger
doc explicitly says that a limit is optional, not mandatory (and that the default JVM implementation uses that limit).Vim,
22, 21 bytes/keystrokesWhile testing this, you might run into issues with the current register values. To fix this, run
before running this, or by launching vim with
fonte
R,
3534 bytesSpacing is a bit werid but I understand that's ok.
fonte
repeat
instead ofwhile(T)
:cat(i<-1);repeat cat("+1/",i<-i*2)
for 1 byte less.Befunge 93: 14 bytes
fonte
Powershell, 34 bytes
Try it online!
fonte
Aceto, 20 bytes
Prints the sequence without any spaces. When run, you won't see anything for a little while, because of buffering, run with
-F
to immediately see everything.fonte
Go,
102100 bytesGo can be almost as bad as Java, apparently.
Try it online! (Would be a good idea to avoid running any of these locally. :P)
fonte
QBIC, 18 bytes
Prints each term on a new line.
Explanation:
We can save a byte with a more liberal output format:
fonte
Mathematica, 25 bytes
fonte
+
s as well as the numbers?C#, ̶6̶8̶ 154 bytes
Here is a version not constrained by int
fonte
int.MaxValue
BigInteger b=1;
and shortening the multiplication tob*=2;
JavaScript (ES6),
454342 bytesSaved 2 bytes, thanks @DanielM ! Saved 1 byte, thanks @eush77 for pointing it out.
=console.log;a=1;(1);for(;;)_(+1/${a*=2}
)=console.log;(a=1);for(;;)_(+1/${a*=2}
)My first go at Codegolf, go easy!
fonte
a=1
can go in the first part of the for,for(a=1;;)
saving you a byte in extra semicolon._(a=1)
, work's with DanielM's suggestion too+1/
, not a fraction.PHP, 32 Bytes
Online Version
-6 Bytes if values like
9.2233720368548E+18
are allowedTry it online!
fonte
AWK,
3732 bytesTry it online!
Could remove the
BEGIN
and save 5 bytes if input were allowed. Using exponents definitely cheaper byte-wise than multiplication. :)Hopefully 2^1023 is close enough to infinity (on my work computer). Unfortunately the TIO link truncates earlier than that (around 921). But 17726622920963562283492833353875882150307419319860869157979152909707315649514250439943889552308992750523075148942386782770807567185698815677056677116184170553481231217950104164393978236130449019315710017470734562946173533283208371259654747728689409291887821024109648618981425152 does seem pretty close to infinity. :)
fonte
Haskell
-6662605149 charsThis prints the string constructed by printing the string representations of the powers of two starting from 1, separated by the string
" + 1/"
.The code itself is 49 bytes, the import and newline push it up to 66
Edit: (62)
Shaved 4 bytes by cutting out the import and defining intercalate with a much shorter name
Edit 2: (60)
Shaved 2 more characters by realizing I didn't need to use the (x:xs) list convention:
Edit 3: (51)
Reimplemented the definition of f and the map as the body of a fold to save 9 more characters
Edit 4: (49)
As was pointed out by Laokoni, I can remove the spaces to cut down 2 more bytes off the total:
fonte
Braingolf,
4137 bytesSaved 4 bytes because I realised I don't need the spaces, always read the spec thoroughly kids
Try it online!
Can probably be golfed better, but it works.
fonte
Fourier, 20 bytes
Try it online!
I think this may only work on Try it Online due to differences in how Python and Javascript handle large numbers.
Explanation Psuedocode:
fonte
Print i
to the start of theWhile
loop?i
.