Saya tertarik melihat program yang tidak meminta input apa pun, mencetak salinan googol dari beberapa string kosong, tidak kurang, tidak lebih, dan kemudian berhenti. Sebuah googol didefinisikan sebagai 10 ^ 100, yaitu, 1 diikuti oleh seratus 0 di desimal.
Contoh output:
111111111111111111111111111111111111111111111111111111111111111111111111...
atau
Hello world
Hello world
Hello world
Hello world
Hello world
Hello world
...
Tali juga dapat seluruhnya terdiri dari ruang putih atau simbol khusus. Satu-satunya pengecualian untuk salinan identik dari string tetap adalah jika bahasa Anda menghiasi output dalam beberapa cara yang tidak dapat dicegah, tetapi bisa secara sepele dibatalkan dalam skrip pembungkus, seperti menambahkan nomor baris ke setiap baris. Skrip pembungkus dalam kasus seperti itu tidak perlu disediakan.
Anda dapat menganggap komputer Anda tidak akan pernah kehabisan waktu, tetapi selain itu, program Anda harus memiliki permintaan sumber daya yang masuk akal. Selain itu, Anda harus menghormati pembatasan apa pun yang dilakukan oleh bahasa pemrograman pilihan Anda, misalnya, Anda tidak dapat melebihi nilai maksimum yang diizinkan untuk jenis integernya, dan tidak boleh lebih dari 4 GB memori diperlukan.
Dengan kata lain, program pada prinsipnya harus dapat diuji dengan menjalankannya di komputer Anda. Tetapi karena besarnya jumlah ini, Anda akan diharapkan untuk membuktikan bahwa jumlah salinan dari string yang dihasilkannya persis 10 ^ 100 dan bahwa program berhenti setelahnya. Menghentikan bisa keluar atau berhenti atau bahkan berhenti karena kesalahan, tetapi jika demikian, kesalahan tidak harus menghasilkan output apa pun yang tidak dapat dengan mudah dipisahkan dari output program.
Ini adalah kode-golf , jadi solusi dengan byte paling sedikit menang.
Contoh solusi (C, ungolfed, 3768 bytes)
#include <stdio.h>
int main() {
int a00, a01, a02, a03, ..., a99;
for(a00 = 0; a00 < 10; a00++)
for(a01 = 0; a01 < 10; a01++)
for(a02 = 0; a02 < 10; a02++)
for(a03 = 0; a03 < 10; a03++)
...
for(a99 = 0; a99 < 10; a99++)
puts("1");
return 0;
}
Jawaban:
Jelly ,
64 byteIni adalah tautan niladic (berfungsi tanpa argumen) yang mencetak 10 200 salinan dari string 100 , artinya ia mencetak 10 100 salinan string yang terdiri dari 10 100 salinan dari string 100 .
Cobalah online!
Perhatikan bahwa juru bahasa online memotong output pada 100 KB untuk alasan praktis. Kode ini juga berfungsi sebagai program lengkap, tetapi karena keluaran implisit, program itu mencetak satu salinan terlalu banyak.
Bagaimana itu bekerja
sumber
10^100
salinan dari output asli (10^100
salinan string) agak jauh, bahkan untuk dua byte penuh. Sudahkah Anda mengirimkan ini ke tantangan "skor adalah keluaran / panjang program, kemenangan tertinggi"?Fuzzy Octo Guacamole,
13121110 bytePenjelasan:
Sampel kambing yang dicetak:
sumber
Python, 28 byte
-1 byte terima kasih kepada Jonathan Allan!
Python 2:
Python 3 (30 byte):
sumber
i=10**100
baris baruwhile i:print();i-=1
menghemat satu byte. Simpan dua lagi dengan menggunakan Python 2 denganwhile i:print;i-=1
Haskell, 28 byte
Menggabungkan 10 ^ 100 salinan string
"1"
dan mencetaknya.sumber
s=[1..10^100]>>"1"
format jawaban diizinkan?s
dari contoh Anda tidak mencetak - atau jika Anda menggunakan REPL mengelilingi1
with"
. Saya kiraputStr$[1..10^100]>>"1"
tanpamain=
itu akan baik-baik saja, tetapi saya ingin mengirimkan program lengkap.Brainfuck,
48018811410698 byteHanya karena itu perlu dilakukan.
Diasumsikan sel 8-bit dengan pembungkus. Mencetak 250 255 NUL byte, yaitu 10 100 kali 10 155 kali 25 255 NUL byte.
Penjelasan:
>>>>>>
diperlukan untuk meninggalkan sedikit ruang kerja.-
menghasilkan 255.[[->>>+<<<]------>>>-]
mengubahnya menjadi 255 salinan dari nilai 250, memberikan rekaman yang terlihat seperti:<<<[<<<]+
memindahkan penunjuk data kembali dan menyelesaikan data awal:Kemudian muncul loop:
[+...-]
awalnya menetapkan 1 ke 2, yang akan diatur kembali ke 1 pada akhir loop. Loop berakhir ketika badan loop sudah diatur 2 ke 1.Sekarang, angka 2 250 250 250 ... 250 mewakili penghitung, dalam basis 250, dengan masing-masing angka satu lebih besar dari angka yang diwakilinya.
[>>>]<<<
bergerak sampai ke kanan. Karena setiap digit diwakili oleh angka bukan nol, ini sepele.->+[<[+>-]>[-<<<<->+>>------>>]<<<<]>>-
mengurangi penghitung dengan 1. Dimulai dengan digit terakhir: digit tersebut akan dikurangi. Jika tetap positif, kita sudah selesai. Jika berubah menjadi nol, atur ke 250, dan lanjutkan dengan digit sebelumnya.[<<<].>>>
memindahkan penunjuk kembali sebelum digit paling kiri, dan ini adalah momen yang baik untuk mencetak byte NUL. Kemudian posisikan kembali ke digit paling kiri, untuk melihat apakah kita sudah selesai.Untuk memverifikasi kebenaran, mengubah awal
-
untuk+
mencetak 250 1 byte NUL,++
untuk 250 2 , dllsumber
C, 51 byte
Fungsi
g()
memanggil fungsi rekursiff()
ke kedalaman 99.Tidak termasuk baris baru yang tidak perlu ditambahkan antara
f()
dang()
untuk kejelasan.Mencetak 1E100 baris baru.
Deklarasi
i
sebagai parameter keduaf()
tidak dijamin bekerja di semua versi C. Diuji pada mesin saya sendiri (GCC di CygWin) dan di ideone.com (saya percaya mereka juga menjalankan GCC), tetapi tidak sampai f (99) untuk jelas alasan!sumber
f()
sekitar 1980 byte. Theputs
dump baris baru ke API dan API harus menampilkan dan menyiram buffer sesuai kebutuhan.f
menulis ke stack space yang dipanggil oleh pemanggil tidak dapat mengharapkannya). dentang memang memperingatkan tentang "terlalu sedikit argumen dalam panggilan ke 'f'", di-std=c89
dan-std=c99
, jadi definisi tersebut bertindak sebagai deklarasi dengan jumlah argumen tertentu. Tapi saya lupa; Saya pikir itu mungkin berarti kompiler tahu fungsi mengharapkan 2 args, dan akan selalu meninggalkan ruang untuk arg kedua.g
dan fungsi pembantuf
.main
akan lebih lama. Ada beberapa pengajuan fungsi lainnya di sini, jika Anda melihatnya.Commodore VIC 20 kode mesin (40 byte)
... di sini ditampilkan sebagai heksadesimal:
(Dimulai menggunakan:
SYS 4160
)Arti byte dalam tanda kurung
Apakah ini kesalahan pengetikan?
Kami memiliki tahun 1981.
Komputer rumahan pada umumnya memiliki RAM 1 hingga 16 K B! Dan Anda tidak akan menemukan model profesional yang memiliki 1 M B atau lebih.
(Ok. Hanya bercanda.)
Program ini telah diuji dengan basis dan eksponen lain. Saya tidak ragu itu juga akan bekerja dengan 100 dan 50.
Setidaknya itu tidak crash dengan angka-angka ini (tetapi juga tidak berakhir dalam waktu yang terukur).
Ukuran memori cukup untuk eksponen 50 dan 100 kurang dari 127 sehingga basis 100 seharusnya tidak menjadi masalah.
Ide dasarnya
Ada penghitung 50 digit yang diperhitungkan dalam sistem 100. Bytes 0x01-0x64 mewakili angka 0-99. Byte pertama di penghitung adalah digit terendah. Byte terakhir di penghitung (digit tertinggi) diikuti oleh byte dengan nilai 0x00.
Penghitung memiliki nilai awal 100 ^ 50.
Loop luar menulis byte ke "saluran saat ini" ("output standar" pada sistem modern; biasanya layar) dan kemudian mengurangi penghitung.
Pengurangan dilakukan oleh lingkaran dalam: Mengurangi satu digit dan dalam kasus aliran bawah dari 1 hingga 99, ia maju ke digit berikutnya. Jika byte 0x00 di ujung penghitung dikurangi, program akan berhenti.
Kode perakitan adalah
SUNTING
Program ini juga berjalan di Commodore C64!
sumber
Node, 89 byte
Output 10 100 baris baru. (Secara teoritis, yaitu; tes dengan mengganti
100
dengan1
output 10 1 baris baru sebagai gantinya.)Ini berfungsi dengan mengatur
i
ke string(100 nol dan 1; a googol terbalik), lalu berulang kali "kurangi 1" dengan regex ganti dan keluaran baris baru sampai string semua nol.
Port jawaban C ++ adalah 49 byte:
sumber
05AB1E , 6 byte
Penjelasan
sumber
Ruby, 20 byte
Mencetak 1 diikuti oleh baris baru 1E100 kali.
1E100
tidak bekerja karena mengevaluasi float, bukan integer presisi yang berubah-ubah.sumber
10**(100.times{p 1})
1E100.to_i
dievaluasi ke 100000000000000001515828911097599180468360808563945281389781327557747838772170381060813469985856815104 di komputer saya./// , 36 karakter ASCII (4 berbeda)
Menghasilkan
.
karakter 3 * 10 ^ 125 kali, artinya mengeluarkan string yang terdiri dari 3 * 10 ^ 25 pengulangan.
karakter, 10 ^ 100 kali.Penjelasan:
/t./.ttttt/
: Gantit.
dengan.ttttt
seluruh sisa program, ulangi sampai tidak ada contoh yangt.
tersisa. Ini menggantikant...
dengan...
diikuti oleh 125t
s./.t/t\........../
: Ganti.t
dengant..........
seluruh sisa program, ulangi sampai tidak ada contoh yang.t
tersisa. Ini mengambil...
diikuti oleh 125t
s, dan mengubahnya menjadi 125t
s diikuti oleh 10 ^ 125 kejadian...
./t//
: Hapus semua yang tersisat
.t...
: Ini akan diganti dengan 3 * 10 ^ 125.
dtk. Keluarkan mereka.Sekarang, menghasilkan 10 ^ 100 pengulangan dari 3 * 10 ^ 25 pengulangan dari sesuatu yang terasa seperti curang. Program ini menghasilkan
.
karakter persis 10 ^ 100 kali, menggunakan 45 karakter ASCII:Penjelasan yang ini:
/T/tttttttttt/
: GantiT
dengantttttttttt
seluruh sisa program. Ini menggantikanTTTTTTTTTT
dengan 100 pengulangan darit
./.t/t........../
: Ganti.t
dengant..........
seluruh sisa program. Ini mengambil.
diikuti oleh 100t
s, dan mengubahnya menjadi 100t
s diikuti oleh 10 ^ 100.
s./t//
: Hapus semua yang tersisat
..TTTTTTTTTT
: Ini diganti dengan 10 ^ 100.
dtk. Keluarkan mereka.Akhirnya, inilah program kompromi, yang menampilkan
.
karakter 2 * 10 ^ 100 kali, menggunakan 40 karakter:sumber
Menembus 93, 33 byte
Sayangnya, Befunge tidak memiliki fungsi daya, jadi hampir semua kode itu adalah implementasi fungsi daya saya. Saya masih mengerjakan ini.
Penjelasan:
1
: Mulailah dengan1
di kiri atas sehingga ketika kita mengalikan, kita tidak mendapatkan0
setiap waktu.01g
: dapatkan karakter di posisi (0, 1), yaitud
, yang kode ASCII-nya adalah 100.0`
: lihat apakah nilai yang disimpan dalam (0, 1) lebih besar dari 0; nilai ini akan berubah.#@!# _
: Logikanya bukan!
dengan nilai yang kita dapatkan dari langkah terakhir (0 atau 1), sehingga jika itu adalah 1, sekarang kita memiliki 0, dan kita catat itu#
berarti bahwa Anda melewatkan karakter berikutnya dalam kode.01g 1- 01p
: Ambil nilai yang disimpan dalam (0, 1) lagi, kurangi 1 dari itu, dan simpan nilai baru ini di (0, 1)25**
: kalikan nilai teratas tumpukan dengan 101.
: cetak1
setiap kali loop ini1
dicetak (secara teori) kali googol, tapi itu dengan cepat lari dari halaman yang saya uji ini.Anda dapat menjalankan kode Befunge 93 di sini . Untuk beberapa alasan, nilai teratas tumpukan adalah
1.0000000000000006e+100
kapan seharusnya1.0e+100
. Saya tidak tahu dari mana6
asalnya, tetapi saya tidak berpikir itu harus ada di sana dan mungkin ada kesalahan pembulatan atau sesuatu seperti itu.sumber
ABCR , 56 byte
Turing tarpit menyenangkan, terutama ketika mereka tidak memiliki perkalian atau eksponen yang mudah. Di sisi lain, saya hanya perlu menggunakan dua dari tiga antrian!
Penjelasan:
sumber
Batch,
574242 byteSetiap loop jatuh karena itu melaksanakan iterasi tambahan. Loop dibatasi hingga ~ 2³² karena batas integer 32-bit. Empat loop pertama masing-masing menghitung 2²⁵ dengan total 2¹⁰⁰ sedangkan sepuluh loop sisanya masing-masing menghitung 5¹⁰ dengan total 5¹⁰⁰.
Sunting: Menyimpan 58% yang tak terbayangkan berkat @ ConorO'Brien.
sumber
TI-Basic, 20 byte
Mudah. Hanya delapan baris yang ditampilkan sekaligus, dan baris sebelumnya tidak tersimpan di memori. Karena
ᴇ100
tidak didukung, kita harus beralih dari-ᴇ99
ke9ᴇ99
. Kemudian, jikaI!=0
, tampilkan string (yang, omong-omong, adalah 3). Dengan cara ini, kami mencetaknya tepatᴇ100
waktu.sumber
fungsi kode mesin x86-64, 30 byte.
Menggunakan logika rekursi sama dengan jawaban C dengan @Level Sungai St . (Kedalaman rekursi maksimum = 100)
Menggunakan
puts(3)
fungsi dari libc, yang biasanya dijalankan oleh executable normal. Itu bisa dipanggil menggunakan Sistem V86 ABI x86-64, yaitu dari C di Linux atau OS X, dan tidak mengalahkan register yang tidak seharusnya.objdump -drwC -Mintel
output, berkomentar dengan penjelasan0x040035e - 0x0400340 = 30 bytes
Dibangun dengan
yasm -felf64 -Worphan-labels -gdwarf2 golf-googol.asm && gcc -nostartfiles -o golf-googol golf-googol.o
. Saya dapat memposting sumber NASM asli, tetapi sepertinya berantakan karena instruksi asm ada di sana di pembongkaran.putchar@plt
kurang dari 128 byte darijl
, jadi saya bisa menggunakan lompatan pendek 2-byte alih-alih 6-byte dekat, tapi itu hanya berlaku dalam eksekusi kecil, bukan sebagai bagian dari program yang lebih besar. Jadi saya tidak berpikir saya bisa membenarkan tidak menghitung ukuran implementasi libc jika saya juga mengambil keuntungan dari pengkodean jcc pendek untuk mencapainya.Setiap level rekursi menggunakan ruang stack 24B (2 push dan alamat balik didorong oleh CALL). Setiap kedalaman lainnya akan memanggil
putchar
dengan tumpukan hanya selaras dengan 8, bukan 16, jadi ini melanggar ABI. Implementasi stdio yang menggunakan toko yang disejajarkan untuk menumpahkan register xmm ke stack akan bermasalah. Tetapi glibcputchar
tidak melakukan itu, menulis ke pipa dengan buffering penuh atau menulis ke terminal dengan buffering baris. Diuji pada Ubuntu 15.10. Ini bisa diperbaiki dengan dummy push / pop di.loop
, untuk mengimbangi tumpukan dengan 8 lain sebelum panggilan rekursif.Bukti bahwa ia mencetak jumlah baris baru yang benar:
Versi pertama saya adalah 43B, dan digunakan
puts()
pada buffer 9 baris baru (dan terminasi 0 byte), jadi put akan menambahkan tanggal 10. Basis rekursi itu bahkan lebih dekat dengan inspirasi C.Anjak 10 ^ 100 dengan cara yang berbeda mungkin bisa memperpendek buffer, mungkin turun ke 4 baris baru, menghemat 5 byte, tetapi menggunakan putchar jauh lebih baik. Ini hanya membutuhkan integer arg, bukan pointer, dan tidak ada buffer sama sekali. Standar C memungkinkan implementasi untuk makro
putc(val, stdout)
, tetapi dalam glibc ia ada sebagai fungsi nyata yang dapat Anda panggil dari asm.Mencetak hanya satu baris baru per panggilan, bukan 10 hanya berarti kita perlu meningkatkan kedalaman maks rekursi sebesar 1, untuk mendapatkan faktor lain dari 10 baris baru. Karena 99 dan 100 keduanya dapat diwakili oleh tanda yang langsung diperpanjang 8-bit,
push 100
masih hanya 2 byte.Lebih baik lagi, memiliki
10
dalam register berfungsi sebagai baris baru dan penghitung lingkaran, menghemat satu byte.Gagasan untuk menyimpan byte
Versi 32-bit dapat menyimpan byte untuk
dec edi
, tetapi konvensi pemanggilan stack-args (untuk fungsi pustaka seperti putchar) membuat tail-call berfungsi lebih mudah, dan mungkin akan membutuhkan lebih banyak byte di lebih banyak tempat. Saya dapat menggunakan konvensi register-arg untuk privatf()
, hanya dipanggil olehg()
, tetapi kemudian saya tidak dapat memanggil-putchar (karena f () dan putchar () akan mengambil jumlah stack-arg yang berbeda).Mungkin saja f () mempertahankan status pemanggil, alih-alih melakukan save / restore di pemanggil. Namun, itu mungkin menyebalkan, karena mungkin perlu terpisah di setiap sisi cabang, dan tidak kompatibel dengan panggilan ekor. Saya mencobanya tetapi tidak menemukan penghematan.
Menjaga loop counter pada stack (bukannya push / popping rcx di loop) tidak membantu. Itu 1B lebih buruk dengan versi yang menggunakan put, dan mungkin bahkan lebih dari kerugian dengan versi ini yang membuat rcx lebih murah.
sumber
PHP, 44 byte
Cuplikan ini akan menampilkan
1
kali googol. Ini tidak akan kehabisan memori, tetapi sangat lambat. Saya menggunakan BCMath untuk dapat menangani bilangan bulat panjang.Performa yang sedikit lebih baik, tetapi tidak sekecil (74 byte):
Akan menampilkan huruf
a
kali googol. Ini akan menghabiskan hampir 4GB memori, menghasilkan sekitar 4e9 karakter sekaligus.sumber
a
, itu adalah string 4 * 10 ^ 9a
s. Tidak mungkin tidak melebihi 4GB jika Anda akan menempatkan 3 kali lebih banyaka
di sana. Ob_flush tidak ada hubungannya dengan itu, poin dari contoh kedua adalah untuk menghasilkan string besar sekaligus bukannya menghasilkan sejumlah kecil karakter setiap kali, yang mengakibatkan program berjalan sedikit lebih cepat, dengan biaya penggunaan memori lebih banyak.Haskell,
4543 bytesumber
Pyke,
65 byteCoba di sini!
Tidak diuji karena browser saya mogok. 4 karakter pertama menghasilkan 10 ^ 100 dan
V
mencetak banyak baris baru. Tes dengan100V
.sumber
Racket 36 byte
Keluaran:
sumber
JAISBaL , 4 byte
Chrome tidak dapat membaca semua simbol, dan saya tidak yakin tentang browser lain, jadi inilah gambarnya:
Penjelasan:
Cukup sederhana .... hanya mencetak spasi googol. Tiga instruksi, tetapi konstanta googol adalah dua byte.
(Ditulis dalam versi 3.0.5)
sumber
JavaScript ES6,
8583 byteDisimpan 2 byte berkat produk ETH!
Ini mencetak 1e100 baris baru.
Bagian dalam menghasilkan program ini, yang kemudian dievaluasi.
Sekarang, sebagai bukti kebenaran, kami akan menggunakan beberapa induksi. Mari pengganti awal 100 untuk nilai-nilai lain, umum N . Saya mengklaim bahwa memasukkan N akan menghasilkan 10 N baris baru. Mari pipa hasil ini ke
wc -l
, yang menghitung jumlah baris baru di input. Kami akan menggunakan skrip yang dimodifikasi tetapi setara ini yang mengambil input N :Sekarang, inilah beberapa keluaran:
Kita dapat melihat bahwa ini mengubah input N untuk nilai kecil menjadi 10 N baris baru.
Berikut ini contoh output untuk N = 1:
sumber
eval([...Array(i=100)].map(_=>`for($${--i}=0;$${i}++<10;)`).join``+"console.log()")
Mathematica,
483025 byteKeluaran:
sumber
For[n=0,n++<10^100,Echo[]]
?>>
dari output. Mereka dicetak jika Anda gunakanEcho
di konsol.Echo@0&~Array~10^100;
21 byte?Fortran 95, bentuk-bebas, Rekursif, 117 byte
Mencetak googol dari garis yang mengandung
Fortran 90, Rekursif, 149 byte
Secara rekursif memanggil 100 loop bersarang, masing-masing 10 iterasi, membuat persis satu googol. N, L, dan loop counters semuanya cocok dengan bilangan bulat berukuran byte.
Diuji dengan mengganti 99 dengan 1, 2, 3, 4, 5 dan mencatat bahwa dalam setiap kasus, jumlah garis yang dihasilkan dari "wc" memiliki n + 1 nol.
Fortran II, IV, 66, atau 77, 231 byte:
Mencetak googol dari baris baru.
Semua program ini akan berjalan di mesin 32-bit; sebenarnya, versi rekursif akan bekerja dengan baik pada mesin 16-bit. Seseorang dapat menggunakan loop yang lebih sedikit dalam versi brute-force dengan menjalankan Cray lama dengan bilangan bulat 60-bit. Di sini, sepuluh loop bersarang dari 2 * 10 ^ 9 di dalam satu loop dari 5 ^ 10 (9765625) sama dengan 10 ^ 100 total iterasi.
Tidak ada versi yang menggunakan memori apa pun untuk berbicara selain dari kode objek itu sendiri, penghitung, satu salinan string keluaran, dan, dalam versi rekursif, tumpukan pengembalian 100-tingkat.
Periksa faktor-faktor dengan membandingkan
sumber
Simulator mesin Turing, 1082 byte
Simulator mesin Turing
Saya tidak tahu apakah ini dianggap sebagai output yang benar, karena memiliki 82 ruang terdepan.
Saya tidak tahu apakah ini menghormati batas 4 GB, jadi, jika tidak, maka itu tidak kompetitif dan hanya untuk showcase. Outputnya adalah 1e100 byte, sehingga harus dikurangkan dari jumlah byte memori. Jumlah byte terakhir adalah 82 byte.
Berikut ini penjelasannya:
80 baris kode pertama adalah 80 negara bagian yang menghasilkan jumlah loop base-19 1
6EC1BCF4688309GH806H932ADCC44EEG6DE0FE9FAHDE66DGH108C9G3623E045A0H7A95AB594CE99A
.19 baris kode berikutnya adalah status penghitung, yang menurunkan jumlah setiap kali karakter dicetak.
6 baris berikutnya adalah status printer, yang menambahkan
=
.Akhirnya, 2 baris terakhir adalah status pembersih, yang diperlukan untuk memastikan satu-satunya output
=====...=====
. Leading / trailing space tidak dihitung sebagai output, karena mereka adalah efek samping yang tidak dapat dihindari.Program kemudian terhenti.
1 Saya melakukan matematika untuk itu.
sumber
Pyth, 7 Bytes
Baru (Bersaing)
Penjelasan
Lama (Tidak Bersaing) 7 Bytes
Penjelasan
sumber
*TT
lebih pendek dari sekadar permainan100
.Python 3, 32 byte
Solusi alternatif, 33 byte:
sumber
range(10**100)
buat daftar angka[1, 2, 3, 4, ...]
, yang menghasilkanOverflowError: range() result has too many items
. Ini akan bekerja di Python 2 dengan panggilan untukxrange()
sebagai gantinya, dan bekerja di Python 3 sejakxrange()
diubah namanya menjadirange()
, dan aslirange()
yang menghasilkan daftar sudah usang.Java,
198179155 bytePrints (
x
==null
?null
: String yang dimulai dengan[La;@
atau sesuatu seperti itu) 10 100 kali dalam O (selamanya) waktu.sumber
class
, tetapi tanpapublic static void main(String[]a)
metode. Adapun tips golf: Anda dapat menggantinew BigInteger("0")
,new BigInteger("1")
dannew BigInteger("10")
denganBigInteger.ZERO
,BigInteger.ONE
danBigInteger.TEN
; Anda bisa menggantinyaimport java.math.BigInteger;
denganimport java.math.*;
.java.math.BigInteger b=null;for(b=b.ZERO;!(b=b.add(b.ONE)).equals(b.TEN.pow(100);)System.out.print(x);
b
nol.Java, 153 byte
Output: 1e100 1s
Saya tahu ada jawaban Java lain yang juga cukup dekat. Milik saya punya utama dan masih lebih pendek.
Ini adalah entri kode-golf pertama saya. Tips dihargai.
sumber
import java.math.*;()->{for(BigInteger i=BigInteger.ZERO;!i.add(i.ONE).equals(i.TEN.pow(100));)System.out.print(1);};
javac
tidak akan membiarkan saya mengkompilasi ini.Pyth,
87 byteTautan
Solusi diuji dengan output kecil, tetapi harus mencetak
abcdefghijklmnopqrstuvwxyz
1e100 kali.Untuk beberapa alasan,
p
itu tidak dibutuhkan, seperti 31343 (Maltysen) katakan .sumber
p