Contare per sempre


71

Scrivi un programma che conta per sempre, a partire da uno.

Regole:

  • Il tuo programma deve accedere STDOUTo un'alternativa accettabile, se STDOUTnon è disponibile.
  • Il tuo programma deve essere un programma completo, eseguibile e non una funzione o un frammento.
  • Il programma deve generare ogni numero con un carattere di separazione tra (una nuova riga, spazio, tabulazione o virgola), ma questo deve essere coerente per tutti i numeri.
  • È possibile stampare i numeri in decimale, in unario o in base 256 in cui ogni cifra è rappresentata da un valore in byte .
  • Il tuo programma deve contare almeno fino a 2 128 (incluso) senza problemi e senza esaurire la memoria su un PC desktop ragionevole. In particolare, ciò significa che se si utilizza unario, non è possibile memorizzare una rappresentazione unaria del numero corrente in memoria.
  • A differenza delle nostre solite regole, sentiti libero di usare una lingua (o versione linguistica) anche se è più recente di questa sfida. Le lingue specificamente scritte per inviare una risposta di 0 byte a questa sfida sono un gioco leale ma non particolarmente interessante.

    Si noti che deve essere presente un interprete per poter testare l'invio. È permesso (e persino incoraggiato) di scrivere questo interprete per una lingua precedentemente non implementata.

  • Non si tratta di trovare la lingua con la soluzione più breve per questo (ci sono alcuni in cui il programma vuoto fa il trucco) - si tratta di trovare la soluzione più breve in ogni lingua. Pertanto, nessuna risposta verrà contrassegnata come accettata.

Catalogare

Lo snippet di stack nella parte inferiore di questo post genera il catalogo dalle risposte a) come elenco della soluzione più breve per lingua eb) come classifica generale.

Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, utilizzando il seguente modello Markdown:

## Language Name, N bytes

dov'è Nla dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Se si desidera includere più numeri nell'intestazione (ad es. Perché il punteggio è la somma di due file o si desidera elencare separatamente le penalità del flag dell'interprete), assicurarsi che il punteggio effettivo sia l' ultimo numero nell'intestazione:

## Perl, 43 + 2 (-p flag) = 45 bytes

Puoi anche rendere il nome della lingua un collegamento che verrà quindi visualizzato nello snippet:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


29
Non sono sicuro di come combinare deve produrre ogni numero con un carattere di separazione in mezzo con può stampare i [...] numeri nella base 256 .
Dennis,

6
Per le sfide future, posso raccomandare il sandbox in modo tale che tutti questi dettagli possano essere ordinati prima che le persone inizino a pubblicare risposte? :)
Martin Ender,

3
@IlmariKaronen Lo interpreto come un limite di memoria, non un limite di tempo. possibilmente un limite di tempo per incremento. basta impostare il contatore su 2 ** 128-10 e vedere quanto tempo ci vuole per fare quegli ultimi dieci passi.
Sparr,

5
Possiamo avere zero iniziali nell'output?
Paŭlo Ebermann,

4
Ugh !!! Ho una risposta per TI-89 (56b), ma non riesco a pubblicare b / c Sono nuovo sul sito e non ho Rep 10+!
Gregregdennis,

Risposte:


63

Labirinto , 5 byte

):
\!

♫ L'IP nel codice gira e rigira ♫

Istruzioni pertinenti:

)       Increment top of stack (stack has infinite zeroes at bottom)
:       Duplicate top of stack
!       Output top of stack
\       Output newline

77
Il programma è triste che non si fermi ..
Ottimizzatore

7
@Optimizer def sad (effettivamente):
YoYoYonnY

1
Perché non si tratta di 4 byte?
Aurel Bílý,

2
@ Aurel300 Il quinto byte è la nuova riga tra :e\
Sp3000 il

@ Sp3000 Ah, sì. Sciocco me :)
Aurel Bílý,

46

> <> , 8 byte

01+:nao!

passi:

  • Premi 0 sullo stack
  • Aggiungi 1 all'elemento superiore dello stack
  • Elemento stack superiore duplicato
  • Stampa la parte superiore dello stack come numero
  • Invia una nuova riga
  • Vai al passaggio 2 avvolgendoti e saltando le istruzioni successive (passaggio 11)

(È un programma meno efficiente in termini di memoria (quindi non valido) llnao.)


66
+1 per l'impaziente implicito esagerato in una riga di codice che praticamente legge "più uno, ora!".
Janus Bahs Jacquet,

24

Haskell, 21 byte

main=mapM_ print[1..]

Gli interi di precisione arbitraria e gli elenchi infiniti rendono questo facile :-)

Fortunatamente mapM_è nel preludio. Se Data.Traversablecosì fosse, potremmo addirittura ridurlo a 19 byte:

main=for_[1..]print

Non esiste un simbolo che generalizza map / mapM ecc.?
JDługosz,

@JDługosz: non che io sappia
Bergi,

Ah, perché dovrebbe comunque sequencearrivare al risultato per ottenere davvero l'output.
JDługosz,

non è semplicemente [1..]permesso, dal momento che stampa tutti i numeri con una virgola tra o il primo a [rovinare tutto?
Baconaro,

@Baconaro: è un elenco, non stampa nulla. GHCi stampa il risultato se si inserisce il termine nella sostituzione, ma questo non è un programma eseguibile. E sì, [neanche il comando è permesso.
Bergi,

23

Gol> <> , 3 byte

P:N

passi:

  • Aggiungi 1 all'elemento stack superiore (all'inizio è uno 0 implicito)
  • Elemento stack superiore duplicato
  • Pop e output la parte superiore dello stack come numero e una nuova riga
  • Passa al punto 1 non appena abbiamo raggiunto la fine della linea

21

Marbelous , 11450 4632 byte

La stampa dei decimali è un dolore !!

Sicuramente non vincere con questo, ma ho pensato di provarlo. Spero sia ok che riduca l'output a 40 zeri (per adattarsi a 2 ^ 128).

00@0..@1..@2..@3..@4..@5..@6..@7..@8..@9..@A..@B..@C..@D..@E..@F..@G..@H..@I..@J
\\++..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00
..EhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhun
....AddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddt
..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7\/
../\&8..........................................................................
....@0..........................................................................
....../\&8......................................................................
....//..@1......................................................................
........../\&8..................................................................
......////..@2..................................................................
............../\&8..............................................................
........//////..@3..............................................................
................../\&8..........................................................
..........////////..@4..........................................................
....................../\&8......................................................
............//////////..@5......................................................
........................../\&8..................................................
..............////////////..@6..................................................
............................../\&8..............................................
................//////////////..@7..............................................
................................../\&8..........................................
..................////////////////..@8..........................................
....................................../\&8......................................
....................//////////////////..@9......................................
........................................../\&8..................................
......................////////////////////..@A..................................
............................................../\&8..............................
........................//////////////////////..@B..............................
................................................../\&8..........................
..........................////////////////////////..@C..........................
....................................................../\&8......................
............................//////////////////////////..@D......................
........................................................../\&8..................
..............................////////////////////////////..@E..................
............................................................../\&8..............
................................//////////////////////////////..@F..............
................................................................../\&8..........
..................................////////////////////////////////..@G..........
....................................................................../\&8......
....................................//////////////////////////////////..@H......
........................................................................../\&8..
......................................////////////////////////////////////..@I..
............................................................................../\&8
........................................//////////////////////////////////////..@J
&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9
Sixteenbytedecimalprintermodulewitharegi

:Sixteenbytedecimalprintermodulewitharegi
}J}J}I}I}H}H}G}G}F}F}E}E}D}D}C}C}B}B}A}A}9}9}8}8}7}7}6}6}5}5}4}4}3}3}2}2}1}1}0}00A
/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A
%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..

:/A
..}0..}0..
..>>}0....
..>>>>\\..
....//..//
../\>>\\..
....>>..//
....>>\\..
....>>....
\\>>//....
..>>......
..>>......
../\......
..../\<<..
......<<..
..\\<<//..
....~~....
....++....
....\\..//
\\....>9\/
..\\..?0..
......++..
....\\....
......{0..

:%A
@0..
}0..
<A-A
{0@0

:Eg
}0}0}0}0}0}0}0}0
^7^6^5^4^3^2^1^0
~~....~~~~..~~~~
^0^0^0^0^0^0^0^0
{0{0{0{0{0{0{0{0

:Ehun
}0..}0
Eg..&0
=8&0{0
&1\/00
0100&0
&1&1{1
{1{0

:Addt
}0}1
{1{1

La stampa binaria sarebbe più breve?
SuperJedi224,

3
(o che dire di unario?)
Maniglia della porta

@Doorknob che visualizza l'output non è il problema. È qualcosa sulla Ehunscheda che dovrebbe aumentare la cifra successiva, ma non funziona correttamente
TheDoctor

1
Sapevi che puoi tralasciare i punti alla fine di ogni riga e le righe vuote tra le schede e utilizzare singoli caratteri per i nomi delle schede? Devi solo ripetere quel singolo personaggio il tempo appropriato per invocarlo. Ciò può portare la risposta a circa 3000 byte.
overactor

Alla fine ho intenzione di inviare un commit a marbelous.py che include tutto include/per impostazione predefinita
Sparr

18

C (solo architettura a 64 bit), 53 byte

Si basa sul fatto che i puntatori sono almeno 64 bit e li stampa in esadecimale utilizzando l' %pidentificatore. Il programma ritornerebbe giusto quando colpisce 2 ^ 128.

char*a,*b;main(){for(;++b||++a;)printf("%p%p ",a,b);}

1
Quindi se quei puntatori sono a 64 bit ciascuno, potresti contare solo su 2 ^ 128-1, giusto?
Flawr

6
Non valido in quanto non può contare fino a 2 ^ 128
edc65

14
Mi piace CodeGolf quando si tratta di esprimere e premiare la creatività. feersum non è chiaramente in competizione per la vittoria qui. Vedere molti commenti negativi su un tecnicismo e modificare la formulazione della domanda per assicurarsi che la sua risposta sia in violazione mi rende triste.
flodel

3
Pensavo che le parole "almeno fino a 2 ^ 128" fossero abbastanza chiare ...
vrwim

5
@vrwim Non l'hai scritto tu. Hai scritto "fino a 2 ^ 128". SuperJedi lo ha modificato pochi minuti fa.
febbraio

17

Esagonia , 12 11 10 7 byte

Grazie ad alephalpha per aver inserito il codice nella lunghezza laterale 2.

10})!';

non piegato:

 1 0
} ) !
 ' ;

Questo è abbastanza semplice. 10scrive un 10, cioè un avanzamento di riga sul bordo di memoria iniziale. Quindi })!';viene ripetutamente eseguito in un ciclo:

  • } passa al bordo di memoria successivo.
  • ) incrementalo.
  • ! stampalo come un numero intero.
  • ' tornare al 10.
  • ; stampalo come personaggio.

Credo che sia ottimale (anche se di gran lunga non unico). Ho lasciato il copione forza bruta che ho scritto per questa risposta ricerca di soluzioni 6 byte sotto l'ipotesi che avrebbe dovuto contenere almeno uno ciascuno dei ;e !eo (o ), e non conterrebbe ?, ,o @, e non l'ha fatto trova le soluzioni.


13

Pyth, 4 byte

.V1b

Spiegazione:

.V1    for b in range(1 to infinity):
   b      print b

f!\n( Collegamento TIO ) funzionerà per 3 byte, non sono sicuro che stia utilizzando funzionalità aggiunte dopo la risposta.
Dal

@Sok Clever. Tuttavia, non cambierò la risposta perché penso che ffosse una caratteristica di Pyth 4 anni fa.
Jakube,

Lo pensavo anch'io, motivo per cui l'ho lasciato come commento: nuove funzionalità linguistiche per battere una risposta più vecchia mi fanno sempre sentire a buon mercato IMO
Sok

13

bc, 10

for(;;)++i

Insolito che bcè più breve di dc.

Da man bc:

DESCRIZIONE

bc è un linguaggio che supporta numeri di precisione arbitrari


Dove lo stampa?
Bálint,

@ Bálint ++iè un'espressione, ma non un compito, e quindi viene esplicitamente prodotto. Hai provato a eseguirlo? echo 'for(;;)++i' | bcnel tuo terminale Linux più vicino.
Trauma digitale

Non ho un solo terminale Linux a casa mia. Ero solo curioso.
Bálint,

6
@ Bálint Ogni casa dovrebbe avere un terminale Linux.
Trauma digitale

1
@ Bálint L'esecuzione di questo programma fa al caso tuo;)
Insane

12

Java, 139 138 127 123 byte

class K{public static void main(String[]a){java.math.BigInteger b=null;for(b=b.ZERO;;)System.out.println(b=b.add(b.ONE));}}

2
Un ciclo infinito più piccolo in Java è for(;;)per 3 byte facili.
Ankh-Morpork,

Puoi anche salvarne altri 2 con BigInteger b=null;b=b.ZERO;, purtroppo =nullè necessario, anche se si tratta di un accesso statico.
TWiStErRob,

E poi un altro 9, perché è possibile eliminare l'importazione facendo riferimento BigIntegera FQCN solo una volta.
TWiStErRob,

@TWiStErRob In qualche modo, non mi ero reso conto che sarebbe stato più breve.
SuperJedi224,

2
Per Java 8 o versioni successive, è possibile sostituire la classe con interfacee rimuovere publicdalla funzione. Non voglio copiare il codice e pubblicarlo come nuova risposta.
Luca H,

10

Mathematica, 22 byte

i=0;While[Echo[++i]>0]

Echo è una nuova funzione in Mathematica 10.3.


Echodà quattro caratteri di separazione: newline plus ">> ". Non sei sicuro che sia valido - potresti usarlo Printinvece? Inoltre, salva un byte con i=0;While[Echo@++i>0].
Roman

7

Rubino, 15 12 byte

loop{p$.+=1}
  • p, quando viene dato un numero intero, stampa l'intero così com'è (per gentile concessione di @philomory )
  • $.è una variabile magica che contiene il numero di righe lette da stdin. È ovviamente inizializzato su 0 e anche assegnabile :)

@philomory In genere si suggerisce agli utenti di lasciare un commento che suggerisce la loro soluzione per il salvataggio di byte. Inoltre, vorrei vedere una spiegazione per questo. c:
Addison Crump,

7

Python 3, 33 25 byte

Per quanto ho capito, gli interi di Pythons sono una precisione arbitraria e print()producono automaticamente nuove righe.

Grazie per @Jakub e @ Sp3000 e @wnnmaw! Davvero non conosco molto Python, l'unica cosa che sapevo era che supporta numeri interi di dimensioni arbitrarie =)

k=1
while 1:print(k);k+=1

1è un valore veritiero in Python (e nella maggior parte delle altre lingue). Quindi while 1:è abbastanza.
Jakube,

Inoltre, puoi mettere il tutto whilesu una riga
Sp3000

È possibile salvare un byte utilizzando repr(k)anziché print(k). Inoltre, conto la dimensione del tuo byte come 25 (senza la mia modifica suggerita)
wnnmaw

1
Non puoi usare al reprposto di print. reprnon genera nulla. @wnnmaw
Zach Gates,

Cosa fa reprallora?
flawr

6

Elaborazione , 95 85 71 byte

java.math.BigInteger i;{i=i.ZERO;}void draw(){println(i=i.add(i.ONE));}

Ho provato qualcosa con un ciclo while, ma causa l'arresto anomalo di tutta l'elaborazione, quindi per ora mi atterrò.

(Grazie a @ SuperJedi224 e @TWiStErRob per i suggerimenti.)


Cosa sono gli spazi? Sono abbastanza sicuro import java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}che funzionerà.
SuperJedi224,

Sì, l'ho appena risolto.
geokavel,

L'elaborazione consente BigInteger.ONEdi modificare in i.ONE?
SuperJedi224,

@ SuperJedi224 Sì, lo fa. Grazie!
geokavel,

Va bene, fai un voto.
SuperJedi224,

6

Samau , 2 byte

N)

Spiegazione:

N     push the infinite list [0 1 2 ...] onto the stack
 )    increase by 1

Quando l'output di un programma è un elenco, le parentesi più esterne vengono omesse.


Un elenco non stampa tutti i suoi contenuti contemporaneamente? Se questo elenco è infinito , non è possibile che si adatti alla memoria o allo schermo e non smetterà mai di essere generato, quindi non verrà mai stampato.
cat

1
@cat Samau è scritto in Haskell ed è pigro . Non genererà l'intero elenco prima di stamparlo.
alephalpha,

Solo un avviso. Nella pagina GitHub di Samau, nella descrizione di @, "push" è errato.
Carcigenicate

@Carcigenicato Grazie.
alephalpha

6

JavaScript (ES6), 99 94 67 byte

for(n=[i=0];;)(n[i]=-~n[i++]%10)&&alert([...n].reverse(i=0).join``)

alertè l' STDOUTequivalente generalmente accettato per JavaScript ma utilizzarlo significa che i numeri consecutivi vengono automaticamente separati. Ho assunto che l'output di un personaggio dopo il numero non è necessario per questo motivo.


12
Ecco perché ho un blocco popup.
Comintern,

1
sto solo dicendo: per (i = 0 ;;) alert (i ++) non penso che tu abbia bisogno di tutti quei controlli
rimorchiamo il

3
@towc Non funzionerà. Tutti i numeri sono float a 64 bit in JavaScript che hanno un valore intero sicuro massimo di 2^53ma la domanda richiede che vada a 2^128.
user81655

1
oh, punto giusto ...
rimorchiamo il

5

Matlab, 132 byte

a=0;while 1;b=a==9;n=find(cumsum(b)-(1:numel(b)),1);a(n)=a(n)+1;a(1:n-1)=0;if ~numel(n);a=[0*a,1];end;disp([a(end:-1:1)+'0','']);end

Ok, penso che questa sia la prima risposta seria che compie questo compito senza un banale numero intero di dimensioni abitative. Questo programma implementa un numero intero di dimensioni arbitrarie come un array di numeri interi. Ogni numero intero è sempre compreso tra 0 e 9, quindi ogni elemento dell'array rappresenta una cifra decimale. La dimensione dell'array verrà aumentata di uno non appena saremo ad es 999. La dimensione della memoria non è un problema qui, poiché 2^128richiede solo un array di lunghezza 39.

a=0;
while 1
    b=a==9;
    %first number that is not maxed out
    n=find(cumsum(b)-(1:numel(b)),1);
    %increase that number, and sett all maxed out numbers to zero
    a(n)=a(n)+1; 
    a(1:n-1)=0;
    if ~numel(n) %if we maxed out all entries, add another digit
        a=[0*a,1];
    end    
    disp([a(end:-1:1)+'0',''])%print all digits
end

5

C ++, 146 141 138 byte

L'uso di una libreria bigint standard è forse il modo più noioso di rispondere a questa domanda, ma qualcuno ha dovuto farlo.

#include<stdio.h>
#include<boost/multiprecision/cpp_int.hpp>
int main(){for(boost::multiprecision::uint512_t i=1;;){printf("%u\n",i++);}}

Ungolfed:

#include<cstdio>
#include<boost/multiprecision/cpp_int.hpp>

int main()
{
    for(boost::multiprecision::uint512_t i=1;;)
    {
        std::printf("%u\n", i++);
    }
}

La ragione per cui la versione golfizzata utilizza stdio.he non cstdioè quella di evitare di usare lo std::spazio dei nomi.

Questa è la prima volta che gioco a golf in C ++, fammi sapere se ci sono trucchi per accorciarlo ulteriormente.


Forse potresti usare '\n'invece di std::endl, ti farebbe risparmiare 8 byte. Inoltre, potrebbe esserci un modo per usare CPP #define per comprimere alcune ripetizioni,
Kenney,

@Kenney Grazie per quello! (Salva solo 5 byte, non 8.) Penso che potrei aver escogitato un modo per modificare quella sezione ancora più breve, però.
Felixphew,

Non conosco boost (e non direi che è standard) ma non è icostruito di default con il valore di 0? È quindi possibile eliminare la definizione e passare il preincremento a preincremet che risparmierebbe 2b
Zereges,

Che ne dici del deprecato #import?
connectyourcharger

5

C # .NET 4.0, 111 103 102 97 byte

class C{static void Main(){System.Numerics.BigInteger b=1;for(;;)System.Console.WriteLine(b++);}}

Non ho trovato nessuna risposta C # qui, quindi ho dovuto solo scriverne una.

È richiesto .NET 4.0, poiché è la prima versione che include BigInteger . Devi fare riferimento a System.Numerics.dll però.

Con rientro:

class C
{
    static void Main()
    {   
        System.Numerics.BigInteger b = 1;
        for (;;)
            System.Console.WriteLine(b++);
    }
}

Grazie a sweerpotato, Kvam, Berend per aver salvato alcuni byte


Puoi salvare 8 byte con class C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}: ~)!
sweerpotato,

1
Sposta la dichiarazione di b Console.WriteLinenella struttura del ciclo:class C{static void Main(){for(var b=System.Numerics.BigInteger.One;;Console.WriteLine(b++));}}
Kvam

Hai ancora bisogno System. Ciò consente di risparmiare un byte!
sweerpotato,

Si hai ragione.
Kvam,

Se si aggiungono using System;(13 byte) è possibile eliminare System.due volte i (7 byte), risparmiando 1 byte.
Kenney,

5

Clojure, 17 byte

(map prn (range))

Le sequenze pigre e gli interi di precisione arbitraria lo rendono facile (come per Haskell e CL). prnmi fa risparmiare qualche byte poiché non ho bisogno di stampare una stringa di formato. doseqsarebbe probabilmente più idiomatico poiché qui abbiamo a che fare solo con effetti collaterali; mapnon ha molto senso usare poiché creerà una sequenza di nil(che è il valore di ritorno di ogni prnchiamata.

Supponendo che io conti per sempre, la sequenza di puntatori null risultante da questa operazione non viene mai restituita.



4

CJam, 7 byte

0{)_p}h

Spiegazione:

0         e# Push a zero to the stack
 {        e# Start a block
  )         e# Increment top of stack
   _        e# Duplicate top of stack
    p       e# Print top of stack
     }    e# End block
      h   e# Do-while loop that leaves the condition on the stack

Nota: è necessario utilizzare l'interprete Java.


4

C, 89 byte

Un nuovo approccio (implementando un incrementatore bit a bit) in C:

b[999],c,i;main(){for(;;)for(i=c=0,puts(b);i++<998;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

Meno golf

int b[999], c, i;
main() {
  for(;;)
    for(i=c=0, puts(b); i++ < 998;)
      putchar(48 + (c ? b[i] : (b[i] = c = !b[i])));
}

Terminare

Questa versione ha il leggero difetto, che non termina (che non è un requisito al momento). Per fare ciò dovresti aggiungere 3 caratteri:

b[129],c=1,i;main(){for(;c;)for(i=c=0,puts(b);i++<128;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

4
In realtà non dovrebbe terminare. Questo è il significato diforever
edc65,

4

Foo , 6 byte

(+1$i)

Spiegazione

(    )    Loop
 +1       Add one to current element
   $i     Output current element as a decimal integer

4

Minkolang , 4 byte

1+dN

Provalo qui. (Beh, in realtà, fai attenzione. 3 secondi di autonomia sono stati sufficienti per arrivare a ~ 40.000.)

1+aggiunge 1 nella parte superiore dello stack, lo dduplica e Ngenera la parte superiore dello stack come numero intero con uno spazio finale. Ciò si verifica perché Minkolang è toroidale, quindi quando il contatore del programma si spegne sul bordo destro, riappare a sinistra.


4

Intel 8086+ Assembly, 19 byte

68 00 b8 1f b9 08 00 31 ff f9 83 15 00 47 47 e2 f9 eb f1

Ecco una ripartizione:

68 00 b8                push   0xb800             # CGA video memory
1f                      pop    ds                 # data segment
b9 08 00           L1:  mov    cx, 8              # loop count
31 ff                   xor    di, di             # ds:di = address of number
f9                      stc                       # set carry
83 15 00           L2:  adc    word ptr [di], 0   # add with carry
47                      inc    di
47                      inc    di
e2 f9                   loop   L2
eb f1                   jmp    L1

Emette il numero di 128 bit nelle 8 posizioni dello schermo in alto a sinistra. Ogni posizione dello schermo contiene un carattere ASCII a 8 bit e due colori a 4 bit.

Nota: si avvolge a 2 128 ; è sufficiente cambiare 8in mov cx, 8in 9per mostrare un numero a 144 bit o anche 80*25per mostrare numeri fino a 2 32000 .

In esecuzione

Immagine floppy di avvio compressa da 1,44 Mb bzip2 codificata base64

Genera l'immagine floppy copiando e incollando quanto segue

QlpoOTFBWSZTWX9j1uwALTNvecBAAgCgAACAAgAAQAgAQAAAEABgEEggKKAAVDKGgAaZBFSMJgQa
fPsBBBFMciogikZcWgKIIprHJDS9ZFh2kUZ3QgggEEh/i7kinChIP7HrdgA=

in questa riga di comando:

base64 -d | bunzip2 > floppy.img

ed eseguire con, ad esempio, qemu -fda floppy.img -boot a

ISO di avvio da 1,8 Mb

Questa è un'immagine ISO compressa con codifica base64 bzip2. Genera l'iso incollando

QlpoOTFBWSZTWZxLYpUAAMN/2//fp/3WY/+oP//f4LvnjARo5AAQAGkAEBBKoijAApcDbNgWGgqa
mmyQPU0HqGCZDQB6mQ0wTQ0ZADQaAMmTaQBqekyEEwQaFA0AA0AxBoAAA9Q0GgNAGg40NDQ0A0Bi
BoDIAANNAA0AyAAABhFJNIJiPSmnpMQDJpp6nqeo0ZDQaAANB6IA0NAGj1EfIBbtMewRV0acjr8u
b8yz7cCM6gUUEbDKcCdYh4IIu9C6EIBehb8FVUgEtMIAuvACCiO7l2C0KFaFVABcpglEDCLmQqCA
LTCAQ5EgnwJLyfntUzNzcooggr6EnTje1SsFYLFNW/k+2BFABdH4c4vMy1et4ZjYii1FbDgpCcGl
mhZtl6zX+ky2GDOu3anJB0YtOv04YISUQ0JshGzAZ/3kORdb6BkTDZiYdBAoztZA1N3W0LJhITAI
2kSalUBQh60i3flrmBh7xv4TCMEHTIOM8lIurifMNJ2aXr0QUuLDvv6b9HkTQbKYVSohRPsTOGHi
isDdB+cODOsdh31Vy4bZL6mnTAVvQyMO08VoYYcRDC4nUaGGT7rpZy+J6ZxRb1b4lfdhtDmNwuzl
E3bZGU3JTdLNz1uEiRjud6oZ5kAwqwhYDok9xaVgf0m5jV4mmGcEagviVntDZOKGJeLjyY4ounyN
CWXXWpBPcwSfNOKm8yid4CuocONE1mNqbd1NtFQ9z9YLg2cSsGQV5G3EhhMXKLVC2c9qlqwLRlw4
8pp2QkMAMIhSZaSMS4hGb8Bgyrf4LMM5Su9ZnKoqELyQTaMAlqyQ3lzY7i6kjaGsHyAndc4iKVym
SEMxZGG8xOOOBmtNNiLOFECKHzEU2hJF7GERK8QuCekBUBdCCVx4SDO0x/vxSNk8gKrZg/o7UQ33
Fg0ad37mh/buZAbhiCIAeeDwUYjrZGV0GECBAr4QVYaP0PxP1TQZJjwT/EynlkfyKI6MWK/Gxf3H
V2MdlUQAWgx9z/i7kinChITiWxSo

dentro, come moto a luogo, andare da dentro a fuori: I put my hand inTO my pocket = metto la mano in tasca

base64 -d bunzip2 > cdrom.iso

e configurare una macchina virtuale per l'avvio da essa.

DOS .COM

Questo è un eseguibile DOS .COM codificato in base64 :

aAC4H7kIADH/+YMVAEdH4vnr8Q==

Genera un file .COM usando

/bin/echo -n aAC4H7kIADH/+YMVAEdH4vnr8Q== | base64 -d > COUNTUP.COM

ed eseguirlo in DOS (gratuito).


4

Perl , 34 32 30 28 26 23 byte

-Mbigint -E '{say$_+=1;redo}'

Prova con

perl -Mbigint -E '{say$_+=1;redo}'

È possibile sostituire for(,,){...}con {...;redo}per due.
primo

Sì, ho visto (perl 5.18+), ma ho pensato che potesse essere un imbroglio; allora le risposte sarebbero le stesse. Sono nuovo qui, quindi ;-)
Kenney,

1
I riferimenti scalari saranno auto-vivificati come SV UNDEF, che quando incrementati non attiveranno il BigIntsovraccarico - perché non è un BigInt. I letterali interi, tuttavia, vengono creati come BigInts. Davvero non così strano;)
primo

1
Potresti usare $-per mantenerlo come un numero intero e tornare a utilizzare ++$-?
Dom Hastings,

1
@DomHastings con cui ho provato perl -Mbigint -E '{say++$-;$-+=$-;redo}' | moree si avvolge intorno a 1. Resta int. Ma bigint non interviene, sfortunatamente.
Kenney,

4

Marbelous, 358 byte

..@F..@E..@D..@C..@B..@A..@9..@8..@7..@6..@5..@4..@3..@2..@1..@001@Z01
..AddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddo/\&I
00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I....@Z
@FHd@EHd@DHd@CHd@BHd@AHd@9Hd@8Hd@7Hd@6Hd@5Hd@4Hd@3Hd@2Hd@1Hd@0Hd
0A@N
..&I
@N/\..
:Hd
}0
Hp
}0
..
{<
#include hex_out.mbl
#include arithmetic.mbl

16 mezze aggiunte sono incatenate insieme, la più a destra esegue N ++ per ogni ciclo e ogni sommatore alimenta il suo overflow (00 o 01) al successivo nella catena. L'output è in esadecimale.

L'interprete python ha un bug in cui l'output delle funzioni memorizzate viene perso, quindi è necessario eseguirlo con "-m 0" per farlo funzionare correttamente. Senza quel parametro puoi vedere quanto velocemente verrà eseguito senza il bug, ma l'output non funzionerà correttamente.

Nota per sé: correggi quel bug in marbelous.py Questo bug è stato corretto nell'ultima versione di marbelous.py


4

R, 52 byte

a=gmp::as.bigz(1);repeat{cat(paste(a,""));a=a+1}

(Nota: gmpè una libreria esterna, quindi potrebbe essere necessario scaricarla per far funzionare questa soluzione)


1
+1 ... mi dispiace per tutti gli extra. Per farti tornare un paio potresti provare a=gmp::as.bigz(0);repeat{cat(paste(a<-a+1,''))}. Potresti voler prendere nota che gmpè una libreria esterna che potrebbe essere necessario scaricare.
MickyT,


4

BotEngine, 128 120 112 8x13 = 104

v2 2 01
>e>S SS
   e1e1
   e2 e0 12
   > > S SS P
  ^   <e0e1 R
     ^ < <lC^
^         <

L'output è in binario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.