Good Evening Golf Agents,
Misi Anda adalah atas nama raksasa hiburan terkenal Eviltronic Arts. Sebagai bagian dari rencana jahat mereka untuk perbudakan dan hiburan dunia, mereka harus menjual sebanyak mungkin salinan SimStation V. Ini berarti bahwa perangkat lunak harus berhenti bekerja secara misterius, setelah memulainya beberapa kali.
Tujuan Anda adalah menulis program yang menghitung berapa kali program itu dijalankan. Program harus melakukan apa pun selain menulis bilangan bulat ke stdout. Pertama kali dijalankan, seharusnya mengembalikan "1". "2" selanjutnya dan seterusnya. Program harus setidaknya dapat mencapai angka "14", tetapi tidak ada batas atas yang diperlukan.
Namun, program Anda tidak boleh menulis file baru. Mengakses sendiri, atau registri, atau bahkan internet sama sekali tidak masalah. Tetapi beberapa pengguna kami curiga terhadap file baru, dan hanya akan menimpanya! Saraf! Mengalahkan batasan pada perangkat lunak yang mereka beli secara sah!
Program tidak dapat menggunakan interpreter atau shell yang stabil - program tersebut masih harus bekerja jika seluruh komputer interpreter nay shell nay di-restart saat dijalankan.
Karena harus tidak terdeteksi mungkin, kode sumber terpendek akan menang.
Agen keberuntungan. Industri hiburan mengandalkan Anda.
Jawaban:
skrip bash,
39,37,2118Singkat dan manis, kiriman pertama saya di kode golf :)
sumber
echo
denganid
: D;
dengan newline dan hapus trailing newline. Bahkan akan terlihat jauh lebih baik :-)Python,
40,39, 38 karakterJuga tidak ada batas atas pada runtime:
Seperti yang Anda lihat, ukuran program secara bertahap meningkat tetapi tidak ada batasan seperti itu dalam masalah aslinya. Saya percaya, ukuran dari program yang diajukan adalah yang terpenting
sumber
a+
,a
harus bekerja dengan baik.PHP 48 byte
Pendekatan modifikasi diri yang sederhana. Setelah berjalan 99 kali, itu akan crash dengan spektakuler.
⋮
sumber
skrip bash, 37
sumber
Ruby:
3121 karakter(Ini adalah penulisan ulang dari Abhijit 's solusi Python . Jika Anda menyukai ide dasar, upvote jawabannya, seperti yang kulakukan.)
Contoh dijalankan:
sumber
<<
Anda dapat menyimpan beberapa karakter: `open ($ 0,? A) <<" + 1 "; p 1 \`* sh, 17
Menggunakan layanan web, pendekatan yang berbeda dari solusi lain yang ada sejauh ini. Batas: Memori mesin saya.
JavaScript, 40
Hampir tidak dihitung sebagai sebuah program, tapi itu cukup lama. Tidak berfungsi di Firefox dalam file lokal. Batas: 2 ^ 31.
sumber
alert(localStorage.a=~~localStorage.a+1)
41 dan secara teknis program javascript akan tanpa tag skrip yang hanya 33alert((l=localStorage).a=~~l.a+1)
a=localStorage;alert(a.b=~~a.b+1)
meskipun milikmu terlihat lebih baik: DPHP 31
37karakterMemodifikasi sendiri. Itu penting di unary. Berhati-hatilah karena editor teks Anda tidak berusaha membantu dan menyisipkan karakter baris baru setelah 1. Hanya akan berfungsi (dengan benar) dalam PHP <5.3.2 karena ia bergantung pada php untuk menutup deskriptor file yang terbuka saat shutdown. Atau dapatkah bocor deskriptor file?
Versi asli (36 karakter), semua versi PHP:
sumber
Python, 50
Ini menggunakan pendekatan yang sama seperti jawaban primo dan juga crash pada menjalankan ke-100.
sumber
J (58)
Anda perlu menjalankan ini sebagai skrip, itu tidak akan bekerja dari baris perintah J jelas.
Di J, tokenizer yang digunakan penerjemah tersedia sebagai
;:
fungsi, jadi jikax
berisi kode J,;:x
berisi token J, yaitu:Begitu:
echo m=.1
: setm
ke 1, dan tulis ke layark=.1{ARGV
: simpan elemen ke-2 diARGV
(nama skrip) dik
.1!:2[k
: tulis string berikut ke file dik
:;:1!:1[k
: bacak
, skrip saat ini, dan tokenize(<":m+1)(<3)}
: ganti token ke-3 dengan representasi string darim + 1
;:^:_1
: jalankan tokenizer secara terbalik, menghasilkan stringexit
: keluar dari juru bahasa (tidak melakukannya sendiri meskipun Anda menjalankan skrip)sumber
PHP,
3433 karakterTerima kasih kepada Tim atas pembaruannya! Solusi lama saya:
Masalahnya adalah bahwa
$_SESSION[A]
adalah""
- string kosong - di iterasi pertama, tetapi sebagaisession_start()
hasil 1, Anda dapat menambahkannya dan membunuh dua atau tiga lalat dalam satu tembakan!Solusi dengan sintaks yang benar (35 karakter):
sumber
Haskell - 36 byte
Cukup tambahkan
+1
ke akhir file sumber, yang dianggap bernamaa.hs
. The.hs
ekstensi adalah wajib di kedua GHC dan ghci.sumber
TI-Basic, 9 karakter
sumber
Angkatan - 41
Dengan contoh use case saya mungkin tidak akan berasumsi bahwa teknik ini adalah yang layak - Ini mengubah nama file bat. Yang berisi skrip -
Simpan ini ke file yang disebut
0.bat
- dan panggil menggunakan0.bat 2>nul
.2>nul
pengalihan stderr ke nul yang diperlukan karena skrip ini akan mengganti nama file yang berisi skrip, setelah itu cmd itu jelas tidak dapat lagi melihat skrip (sebelum hits EOF) dan akan mengembalikan kesalahanThe batch file cannot be found.
Setiap panggilan naskah yang berurutan tentu saja harus
1.bat 2>nul ... 2.bat 2>nul ... 3.bat 2>nul ... etc ...
sumber
skrip mIRC, 28/22 byte
Jika dimasukkan ke tab "alias", "alias" dapat dihilangkan dengan membuat 22 byte.
sumber
Python,
4948 karakterSaya menyadari ini hanya akan menjadi 48 karakter pada Windows karena
\r\n
. Kalau tidak, harus 49.Metode murah dari @grc
sumber
C, 190 Karakter. Hanya bekerja pada Win NT
sumber
C #, 142 karakter
sumber
Tcl, 63 atau 73 byte
Dengan beberapa layanan web, 73:
memodifikasi sendiri adalah 63:
sumber
C # -
201239234 karakterBekerja untuk 255 kali pertama, lalu membungkus ke 0. Ini tidak akan menghasilkan apa pun pada eksekusi pertama.
Simpan sebagai Main.cs, kompilasi dengan
Diuji dengan gmcs 2.10.8.1 dan Mono runtime 2.10.8.1-5ubuntu2
sumber
Powershell, 47 Bytes
menganggap skrip dinamai
a.ps1
Script akan menimpa dirinya mengganti
0
pada baris pertama dengan1
,2
,3
dan sebagainya.bisa juga menyimpan 8 byte lainnya dengan mengganti kedua contoh
a.ps1
dengan1
dan menyimpan skrip sebagai file bernama1
meskipun ini agak jauh bagi saya.Ganti baris kedua dengan ini jika file tidak disimpan sebagai 'a.ps1'.
0
pada baris pertama untuk menginisialisasi hitunganLinebreak menyediakan cara termudah untuk membagi file menjadi dua
ini mengambil file 'a.ps1' dan membacanya sebagai larik baris, kemudian kita mengulanginya dengan
[0..1]
dan mengaturnya ke variabel$n
yang dilemparkan sebagai[int]
dan$t
masing - masing, sehingga0
pada baris pertama menjadi$n
dan kode ' 'Pada baris kedua menjadi$t
Ini menggunakan
,1,2
notasi array, untuk membuat array dari dua elemen, satu menjadi nomor yang disimpan dalam$n
pra-kenaikan dan di-output ke stdout dengan menggunakan tanda kurung implisit, yang kedua adalah baris kedua teks dari file, dan kemudian juga output ke file bernama 'a.ps1'karena input dan output adalah array dari string maka diperlukan pemformatan minimal, dan hampir semuanya diasumsikan oleh penerjemah.
sumber
Zsh (tanpa coreutils), 32 byte
(Perhatikan baris tambahan) Menggunakan panjang skrip. Pada setiap doa, baris terakhir yang ditunjukkan di atas akan menambahkan
:
(identik dengantrue
) dan baris baru ke skrip, karenanya/2
.Cobalah online!
sumber
Karat / skrip kargo, 283 byte
Oneliner:
Simpan sebagai
w
dan jalankan dengancargo-script
:Jangan beralih terlalu cepat atau itu akan macet .
Sebagian tidak diserang:
Akan pecah setelah 99999;
sumber
GNU sed, 13 + 1 (n flag) = 14 byte
Jalankan: sed -nf ss
Asumsinya adalah nama file sumber dipanggil
s
. Newline tambahan diperlukan setelah kode, yang dihitung dalam total byte. Penjelasan:sumber