Sonsuza kadar say


71

Birinden başlayarak sonsuza kadar sayan bir program yazın.

Kurallar:

  • Uygun STDOUTdeğilse STDOUT, programınız oturum açmalı veya kabul edilebilir bir alternatif içermelidir .
  • Programınız tam, çalıştırılabilir bir program olmalı ve bir işlev veya snippet olmamalıdır.
  • Programınız arasında her biri sayı karakterleri (yeni satır, boşluk, sekme veya virgül) olan bir karakter çıktısı alınmalıdır, ancak bu tüm sayılar için tutarlı olmalıdır.
  • Rakamları ondalık, tek tek veya baz basamağında, her bir basamağın bir bayt değeri ile gösterilebileceği şekilde yazdırabilirsiniz .
  • Programınız, en az 2 128 (dahil) sorun çıkarmadan ve makul bir masaüstü PC'de yetersiz bellek olmadan sayılmalıdır. Özellikle, bunun anlamı, eğer tekli kullanıyorsanız, mevcut sayının tekli bir gösterimini bellekte saklayamazsınız demektir.
  • Her zamanki kurallarımızdan farklı olarak, bu zorluktan daha yeni olsa bile, bir dili (veya dil sürümünü) kullanmaktan çekinmeyin. Bu zorluğa 0 baytlık bir cevap göndermek için özel olarak yazılan diller adil oyundur ancak özellikle ilgi çekici değildir.

    Gönderimin test edilebilmesi için bir tercüman olması gerektiğini unutmayın. Daha önce uygulanmamış bir dil için bu tercümanı kendiniz yazmanıza izin verilir (ve hatta teşvik edilir).

  • Bu, bunun için en kısa çözümü içeren dili bulmakla ilgili değildir (boş programın hile yaptığı bazı yerler vardır) - bu, her dilde en kısa çözümü bulmakla ilgilidir. Bu nedenle, hiçbir cevap kabul edilmiş olarak işaretlenmeyecektir.

Katalog

Bu yazının altındaki Yığın Parçacığı, cevapları a) dil başına en kısa çözümün bir listesi olarak ve b) genel bir lider tablosu olarak oluşturur.

Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:

## Language Name, N bytes

nerede NGönderinizden boyutudur. Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

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

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

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

Dil adını, daha sonra pasajda görünecek bir bağlantı da yapabilirsiniz:

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


29
Ben nasıl birleştirileceği emin değilim aralarında bir ayırma karakteri ile zorunluluk çıktı üretmesi her numara ile tabana 256 yılında [...] numaralar yazdırabilirsiniz .
Dennis,

6
Gelecekteki zorluklar için, sanal alanı , insanlar yanıt göndermeye başlamadan önce tüm bu ayrıntıların sıralanabileceği şekilde önerebilir miyim? :)
Martin Ender

3
@IlmariKaronen Bunu bir zaman limiti değil hafıza limiti olarak yorumluyorum. muhtemelen artış başına bir zaman sınırı. sadece sayacı 2 ** 128-10 olarak ayarlayın ve bu son on adımı atmanın ne kadar sürdüğünü görün.
Sparr

5
Çıktıda öncü sıfırlar olabilir mi?
Paŭlo Ebermann 15:15

4
Ahh !!! TI-89 (56b) için bir cevabım var, ancak mesaj yazamam. Sitede yeniyim ve Rep 10+ yok!
gregsdennis,

Yanıtlar:


63

Labirent , 5 bayt

):
\!

The Koddaki IP yuvarlak ve yuvarlak ♫

İlgili talimatlar:

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

77
Programın durmaması nedeniyle üzülüyor ..
Optimizer

7
@Optimizer def üzgün (gerçekten):
YoYoYonnY 16:15

1
Bu neden 4 bayt değil?
Aurel Bílý

2
@ Aurel300 Beşinci bayt, :ve\
satırdır

@ Sp3000 Ah, evet. Aptal ben. :)
Aurel Bílý

46

> <> , 8 bayt

01+:nao!

Adımlar:

  • Yığına 0 basın
  • Üst yığın öğesine 1 ekleyin
  • Çoğaltılmış üst yığın öğesi
  • Yığının tepesini sayı olarak çıkarın
  • Yeni bir satır çık
  • Etrafına sarılıp bir sonraki talimatı atlayarak 2. adıma gidin (adım 11)

(Daha az bellek verimli (dolayısıyla geçersiz) bir programdır llnao.)


66
Sabırsızlık gerektiren yüksek talepkar talep için +1, temelde “artı bir, şimdi!” Yazan bir kod satırında.
Janus Bahs Jacquet

24

Haskell, 21 bayt

main=mapM_ print[1..]

İsteğe bağlı hassas tam sayılar ve sonsuz listeler, bunu kolaylaştırır :-)

Neyse ki mapM_Prelude'de. Eğer Data.Traversablehem oldu, hatta 19 bayt bunu küçültmek olabilir:

main=for_[1..]print

Map / mapM'yi genelleyen bir sembol yok mu?
JDługosz

@ JDługosz: bildiğim kadarıyla değil
Bergi

Ah, çünkü sequenceçıktının gerçekten gerçekleşmesini sağlamak için hala sonuç olması gerekecek .
JDługosz

basitçe [1..]izin verilmez, çünkü tüm sayıları beween'de virgül ile yazdırır? ya da ilk [vida hepsini?
Baconaro

@Baconaro: Bu bir liste, hiçbir şey yazmıyor. GHCi, repl'de terimi girerseniz sonucu yazdırır, ancak bu çalıştırılabilir bir program değildir. Ve evet, liderlere [de izin verilmiyor.
Bergi

23

Gol> <> , 3 bayt

P:N

Adımlar:

  • En üstteki yığın elemanına 1 ekleyin (başlangıçta 0 ile örtüktür)
  • Çoğaltılmış üst yığın öğesi
  • Yığının tepesini sayı ve yeni satır olarak açıp çıkar
  • Çizginin sonuna geldiğimizde 1. adıma geçin

21

Mermer , 11450 4632 bayt

Ondalık basmak acı vericidir !!

Kesinlikle bununla kazanmam, ama bir şans vereceğimi düşündüm. İnşallah çıktısını 40 sıfır atar (2 ^ 128 e sığar).

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

İkili yazdırmak daha kısa olur mu?
SuperJedi224 14:15

3
(ya da ne hakkında tekli?)
Doorknob

@Doorknob çıktısını görüntülemek sorun değil. Bu üzerinde bir şey Ehunbir sonraki basamağı artırmak gerekiyordu kurulu, ancak düzgün çalışmıyor
TheDoctor

1
Her satırın sonundaki dönemleri ve panolar arasındaki boş satırları bırakıp pano adları için tek karakterler kullanabileceğinizi biliyor muydunuz? Sadece bu tek karakteri, onu çağırmak için uygun zaman diliminde tekrarlamanız gerekir. Bu, cevabınızı yaklaşık 3000 bayta indirebilir.
otorractor

Sonunda include/varsayılan olarak hepsini içeren marbelous.py'ye bir taahhütte bulunacağım
Sparr

18

C (yalnızca 64 bit mimari), 53 bayt

En az 64 bit olan işaretçilere güvenir ve %pbelirteci kullanarak bunları hex olarak yazdırır . Program 2 ^ 128'e ulaştığında sağa döner.

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

1
Öyleyse bu işaretçiler her 64 bit'de ise, yalnızca 2 ^ 128-1'e kadar sayabilirdiniz, değil mi?
kusur

6
Geçersiz o 2 ^ 128 kadar sayamazsınız olarak
edc65

14
CodeGolf'u yaratıcılığın ifade edilmesi ve ödüllendirilmesi ile ilgili olarak seviyorum. Feersum, buradaki galibiyet için açıkça rekabet etmiyor. Teknik olarak birçok olumsuzluk görmek ve cevabın ihlal edildiğinden emin olmak için sorunun ifadesini değiştirmek beni üzüyor.
flodel

3
"En az 2 ^ 128 kadar" kelimelerinin yeterince açık olduğunu
düşündüm

5
@vrwim Bunu yazmadın. "2 ^ 128'e kadar" yazdın. SuperJedi birkaç dakika önce düzenledi.
feersum

17

Altıgen , 12 11 10 7 bayt

Kodu yan uzunlukta 2'ye yerleştirmek için alephalpha'ya teşekkürler.

10})!';

Kırımsız:

 1 0
} ) !
 ' ;

Bu oldukça basittir. 1010, yani ilk bellek kenarına doğru beslenen bir satır yazar. Sonra })!';tekrar tekrar bir döngüde yürütülür:

  • } sonraki hafıza kenarına ilerleyin.
  • ) arttır.
  • ! bir tamsayı olarak yazdır.
  • ' 10'a geri dön.
  • ; karakter olarak yazdır

Bunun optimal olduğuna inanıyorum (şu ana kadar eşsiz olmasa da). Ben yazdım kaba kuvvet senaryoyu izin verdim Bu cevap için en az bir tane her biri içermek zorunda olacağı varsayımı altında 6 baytlık çözüm arayışlarında ;ve !ve ya (ya ), ve içermeyen olmaz ?, ,ya @, ve etmedi herhangi bir çözüm bulmak.


13

Pyth, 4 bayt

.V1b

Açıklama:

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

f!\n( TIO bağlantısı ) 3 byte için çalışacak, cevabınızdan sonra eklenen herhangi bir özelliği kullanıp kullanmadığından emin değil.
Sok

@ Zeki. Ancak cevabı değiştirmeyeceğim çünkü bunun f4 yıl önce Pyth’in bir özelliği olduğunu düşünüyorum .
Jakube,

Ben de öyle düşündüm, bu yüzden yorum olarak bıraktım - eski bir cevabı yenmek için yeni dil özellikleri IMO
Sok

13

bc, 10

for(;;)++i

Sıradışı bcolandan daha kısa dc.

Kimden man bc:

AÇIKLAMA

bc, rasgele kesinlikli sayıları destekleyen bir dildir.


Bu nerede basar?
Bálint

@ Blint ++i, bir ifadedir, fakat bir ödev değildir ve açıkça çıktıdır. Koşmayı denedin mi? echo 'for(;;)++i' | bcen yakın Linux terminalinde.
Dijital Travma

Evimde tek bir Linux terminalim yok. Sadece merak ettim.
Bálint

6
@ Bálint Her evin bir Linux terminali olmalıdır.
Dijital Travma

1
@ Bálint Bu programı kullanmak sizin kullanımınız;)
Insane

12

Java, 139 138 127 123 bayt

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
Java'da daha küçük bir sonsuz döngü for(;;)3 bayt için kolay.
ankh-morpork

Ayrıca BigInteger b=null;b=b.ZERO;, ne yazık ki =nullihtiyaç duyulduğuna göre, statik bir erişim olduğu düşünüldüğünde 2 tane daha kaydedebilirsiniz .
TWiStErRob 14:15

Ve sonra başka bir 9, çünkü BigIntegerFQCN'ye sadece bir kez başvurarak ithalattan kurtulabilirsiniz .
TWiStErRob 14:15

@TWiStErRob Her nasılsa, bunun daha kısa olacağını farketmemiştim.
SuperJedi224

2
Java 8 veya daha yenisi için sınıfı değiştirebilir ve işlevden interfaceçıkarabilirsiniz public. Kodunuzu kopyalayıp yeni bir cevap olarak göndermek istemeyin.
Luca H

10

Mathematica, 22 bayt

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

Echo Mathematica 10.3'teki yeni bir fonksiyondur.


Echodört ayrı karakter verir: newline plus ">> ". Bunun geçerli olduğundan emin değil - belki kullanmak Printyerine? Ayrıca, bir bayt ile kaydedin i=0;While[Echo@++i>0].
Roman

7

Ruby, 15 12 bayt

loop{p$.+=1}
  • p, bir tamsayı verildiğinde, tamsayı olduğu gibi yazdırır ( @philomory izniyle )
  • $.stdin'den okunan satır sayısını tutan sihirli bir değişkendir. Açıkçası 0 olarak başlatılır ve ayrıca atanabilir :)

@philomory Kullanıcılara, bayt tasarruf çözümleri öneren bir yorum bırakmaları önerilir. Ayrıca bunun için bir açıklama görmek istiyorum. c:
Addison Crump

7

Python 3, 33 25 bayt

Anladığım kadarıyla Pythons tamsayıları keyfi bir kesinliktir ve print()otomatik olarak yeni çizgiler üretir.

@Jakub ve @ Sp3000 ve @wnnmaw için teşekkürler! Gerçekten pek python bilmiyorum, bildiğim tek düşünce keyfi boyut tamsayılarını desteklemesiydi =)

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

1Python (ve diğer birçok dilde) bir gerçeği değeridir. Bu while 1:kadar yeter.
Jakube

Ayrıca, bütünü whiletek bir satıra koyabilirsiniz
Sp3000

Kullanmak repr(k)yerine bir bayt kaydedebilirsiniz print(k). Ayrıca, bayt boyutunuzu 25 olarak (önerilen değişikliğim olmadan)
sayarım

1
Bunun repryerine kullanamazsınız print. reprhiçbir şey çıkarmaz. @wnnmaw
Zach Gates,

O zaman ne yapar repr?
kusur

6

İşlem , 95 85 71 bayt

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

Bir süre döngü ile bir şey denedim ama bu tüm İşleme çökmesine neden oluyor, bu yüzden şimdilik buna bağlı kalacağım.

(Önerileriniz için @ SuperJedi224 ve @TWiStErRob'a teşekkürler.)


Boşlukların nesi var? import java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}İşe yarayacağından eminim .
SuperJedi224 14:15

Evet, tamir ettim.
geokavel

İşlem, BigInteger.ONEdeğiştirilmesine izin veriyor i.ONEmu?
SuperJedi224

@ SuperJedi224 Evet, öyle. Teşekkürler!
geokavel

Tamam, bir oy ver.
SuperJedi224 14:15

6

Samau , 2 bayt

N)

Açıklama:

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

Bir programın çıktısı bir liste olduğunda, en dıştaki parantezler kullanılmaz.


Bir liste tüm içeriğini bir kerede basmıyor mu? Bu liste sonsuzsa , muhtemelen belleğe veya ekranınıza sığmaz ve asla oluşturulmayı durduramaz, bu nedenle asla yazdırılmaz.
kedi

1
@cat Samau Haskell'da yazılmıştır ve tembeldir . Yazdırmadan önce tüm listeyi oluşturmaz.
alephalpha

Sadece bir kafa yukarı. Samau için GitHub sayfasında @, "push" açıklamasında yanlış yazılmış.
Carcigenicate

@Carcigenicate Teşekkürler.
alephalpha

6

JavaScript (ES6), 99 94 67 bayt

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

alertSTDOUTJavaScript için genel olarak kabul edilen bir eşdeğerdir, ancak kullanılması ardışık sayıların otomatik olarak ayrılması anlamına gelir. Sayıdan sonra bir karakter çıktısının gerekli olmadığına inanıyorum.


12
Bu yüzden açılır pencere engelleyicim var.
Komintern

1
sadece şunu söyleyerek: (i = 0 ;;) alert (i ++) için tüm bu kontrollere ihtiyacınız olduğunu sanmıyorum
towc

3
@towc Bu işe yaramaz. Tüm sayılar JavaScript'te maksimum güvenli bir tamsayı değerine sahip 64 bitlik yüzdelerdir, 2^53ancak soru bunun artmasını gerektirir 2^128.
user81655 13

1
oh, fuar noktası ...
saat

5

Matlab, 132 bayt

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

Tamam, bunun önemsiz yerleşik bir tamsayı tamsayı olmadan bu görevi gerçekleştiren ilk ciddi cevap olduğunu düşünüyorum . Bu program, bir tamsayı dizisi olarak isteğe bağlı bir tamsayı uygular. Her tam sayı her zaman 0 ile 9 arasındadır, bu nedenle her bir dizi öğesi bir ondalık basamağı temsil eder. Dizi büyüklüğü, örneğin olduğumuzda birer birer artar 999. Hafıza boyutu burada sorun değildir, çünkü 2^128sadece 39 uzunluk bir dizi gerektirir.

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 bayt

Standart bir bigint kütüphanesi kullanmak belki de bu soruyu cevaplamanın en sıkıcı yoludur, ancak birileri bunu yapmak zorunda kaldı.

#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++);
    }
}

Golf versiyonunun kullanmasının stdio.hve kullanılmamasının nedeni kullanmak cstdiozorunda kalmamaktır.std:: ad.

Bu benim ilk kez C ++ 'da golf oynamak, bunu daha da kısaltmak için herhangi bir püf noktası olup olmadığını bana bildirin.


Belki '\n'yerine kullanabilirsiniz std::endl, 8 bayt kurtarır. Ayrıca bazı tekrarları sıkıştırmak için CPP #define komutunu kullanmanın bir yolu olabilir,
Kenney

@Kenney Bunun için teşekkür ederim! (Sadece 5 byte tasarruf eder, 8 değil.) Sanırım bu bölümü daha da kısaltmak için bir yol bulabilirim.
felixphew

Artırmayı bilmiyorum (ya da standart olduğunu söyleyemem) ama ivarsayılan olarak 0 değeriyle oluşturulmaz? Daha sonra tanımı kesebilir ve postincrement'i 2b kazandıracak preincremet'e geçirebilirsiniz
Zereges

İtiraz edilmeye ne dersiniz #import?
connectyourcharger

5

C # .NET 4.0, 111 103 102 97 bayt

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

Burada herhangi bir C # cevabı bulamadım, o yüzden bir tane yazmak zorunda kaldım.

.NET 4.0 gereklidir, çünkü BigInteger'i içeren ilk sürümdür . Ancak System.Numerics.dll dosyasına başvuruda bulunmalısınız .

Girintili:

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

Bazı baytları kaydettiği için sweerpotato, Kvam, Berend sayesinde


Ile 8 bayt kaydedebilirsiniz class C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}: ~)!
tatlı patates

1
B bildirimini ve Console.WriteLinedöngü yapısına taşıyın :class C{static void Main(){for(var b=System.Numerics.BigInteger.One;;Console.WriteLine(b++));}}
Kvam

Hala ihtiyacın var System. Bu olsa bir bayt kaydeder!
tatlı patates

Evet, haklısın.
Kvam

Eğer eklerseniz using System;(13 bayt) uzakta yapabileceğiniz System.1 byte tasarrufu iki kez (7 bayt).
Kenney,

5

Clojure, 17 bayt

(map prn (range))

Tembel diziler ve isteğe bağlı hassas tamsayılar bunu kolaylaştırır (Haskell ve CL için olduğu gibi). prnbir biçim dizesi yazdırmam gerekmediğinden bana birkaç bayt kazandırdı. doseqMuhtemelen daha aptalca olurdu çünkü burada sadece yan etkilerle uğraşıyoruz; mapbir dizi yaratacağı için kullanımı pek bir anlam ifade etmiyor nil(her birinin dönüş değeriprn çağrının .

Sonsuza dek saydığımı varsayarsak, bu işlemden kaynaklanan boş gösterici dizisi asla geri alınmaz.


4

MarioLANG , 11 bayt

+<
:"
>!
=#

Martin Büttner'ın başka bir soruya cevabından ilham alındı .


Bunun 2 ^ 128'ye kadar sorunsuz çalıştığından emin misin?
kusur


@flawr MarioLANG bir Ruby tercümanına sahiptir ve Ruby'nin tamsayı türü keyfi bir hassasiyete sahiptir.
Martin Ender

@flawr Tercümana bağlıdır. Kullandığım tercüman Ruby'de yazılmıştır ve isteğe bağlı kesinliği destekler.
alephalpha

4

CJam, 7 bayt

0{)_p}h

Açıklama:

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

Not: Java tercümanı kullanmalı.


4

C, 89 bayt

C 'de yeni bir yaklaşım (bitsel bir artış uygulayarak):

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

Daha az golf oynadı

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

bitirmek

Bu versiyonda, şu anda bir zorunluluk olmayan, sonlandırılmadığı için küçük bir kusur var. Bunu yapmak için 3 karakter eklemelisin:

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
Aslında sona ermemelidir. Bu anlamı budurforever
edc65

4

Foo , 6 bayt

(+1$i)

açıklama

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

4

Minkolang , 4 bayt

1+dN

Burada dene.(Aslında, dikkatli olun. 3 saniyelik çalışma süresi ~ 40.000'e ulaşması için yeterliydi.)

1+yığının üstüne 1 ekler, dçoğaltır ve Nyığının tepesini sonunda boşluk olan bir tamsayı olarak çıkarır. Bu döngüler çünkü Minkolang toroidaldir, bu nedenle program sayacı sağ kenardan çıktığında solda tekrar belirir.


4

Intel 8086+ Montaj, 19 bayt

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

İşte bir döküm:

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

Sol üstteki 8 ekran pozisyonunda 128 bitlik sayıyı çıkarır. Her ekran konumu, 8 bitlik bir ASCII karakterine ve iki adet 4 bit renk tutar.

Not: 2 128'de dolanır ; basitçe değiştirmek 8in mov cx, 8için 9bile 144 bit sayısını göstermek için, ya da 80*252'ye kadar sayıları göstermek için 32000 .

Koşu

1.44Mb bzip2 sıkıştırılmış, base64 şifreli önyüklenebilir disket Görüntü

Aşağıdakileri kopyalayıp yapıştırarak disket görüntüsünü oluşturun

QlpoOTFBWSZTWX9j1uwALTNvecBAAgCgAACAAgAAQAgAQAAAEABgEEggKKAAVDKGgAaZBFSMJgQa
fPsBBBFMciogikZcWgKIIprHJDS9ZFh2kUZ3QgggEEh/i7kinChIP7HrdgA=

bu komut satırına:

base64 -d | bunzip2 > floppy.img

ve örneğin qemu -fda floppy.img -boot a

1.8 MB önyüklenebilir ISO

Bu bir base64 kodlu bzip2 sıkıştırılmış ISO görüntüsüdür. Yapıştırarak iso oluşturun

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

içine

base64 -d bunzip2 > cdrom.iso

ve sanal makineyi önyüklenecek şekilde yapılandırın.

DOS .COM

Bu bir base64 şifreli DOS .COM çalıştırılabilir:

aAC4H7kIADH/+YMVAEdH4vnr8Q==

Kullanarak bir .COM dosyası oluşturun

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

ve (Ücretsiz) DOS'ta çalıştırın.


4

Perl , 34 32 30 28 26 23 bayt

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

İle test et

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

İki for(,,){...}ile değiştirebilirsiniz {...;redo}.
primo

Evet gördüm (perl 5.18+) ama aldatma olabileceğini düşündüm; o zaman cevaplar aynı olurdu. Burada yeniyim, öyleyse ;-)
Kenney

1
Skaler referanslar, kendiliğinden artırıldığı SV UNDEFzaman BigIntaşırı yüklenmeyi tetiklemeyeceği için otomatik olarak gösterilecektir - çünkü bu bir değildir BigInt. Tamsayı değişmezleri, ancak, BigInts olarak oluşturulur . Gerçekten çok garip değil;)
Primo

1
Bir $-tamsayı olarak tutmak ve kullanmaya geri dönmek için kullanabilir misiniz ++$-?
Dom Hastings

1
@DomHastings ile test ettim perl -Mbigint -E '{say++$-;$-+=$-;redo}' | moreve yaklaşık 1'e dolandı. Bir int kalıyor ancak bigint maalesef devreye girmiyor .
Kenney,

4

Mermer, 358 bayt

..@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 yarım eklenti birlikte zincirlenmiştir, en sağdaki her N ++ 'u gerçekleştirir ve her toplayıcı zincirde bir sonraki taşma akışını (00 veya 01) besler. Çıktı hex cinsindendir.

Python yorumlayıcısının, hafızaya alınmış fonksiyonlardan elde edilen çıktıların kaybolduğu bir hata vardır, bu yüzden doğru çalışması için bunu "-m 0" ile çalıştırmanız gerekir. Bu parametre olmadan hata olmadan ne kadar hızlı çalışacağını görebilirsiniz, ancak çıktı doğru çalışmayacaktır.

Kendime Not: Bu hatayı marbelous.py'de düzelt. Bu hata, marbelous.py'nin en son sürümünde düzeltildi.


4

R, 52 Bayt

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

(Not: gmpharici bir kütüphanedir, bu yüzden çalışması için bu çözümü indirmeniz gerekebilir)


1
+1 ... tüm ekstralar için üzgünüm. Seni bir çift geri almak için deneyebilirsin a=gmp::as.bigz(0);repeat{cat(paste(a<-a+1,''))}. İndirilmesi gerekebilecek gmpharici bir kütüphane olan bir not yazmak isteyebilirsiniz.
MickyT


4

BotEngine, 128 120 112 8x13 = 104

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

Çıktı ikilidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.