pengantar
Berita buruk teman-teman - Anda ditahan. Guru bahasa Inggris Anda tidak memahami situs ini dan ingin Anda "berhenti mengerjakan matematika di perangkat digital Anda, ini kelas bahasa Inggris!"
Dia memvonis Anda untuk menulis pepatah favoritnya di papan tulis 25 kali, yang akan memberikan total 100 baris di papan tulis.
The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
Beruntung bagi Anda, Anda adalah pembaca yang rajin (belum lagi pegolf ahli kode)! Anda telah membaca tentang trik yang mungkin membuat Anda mudah.
(Foxtrot oleh Bill Amend)
Sayangnya untuk Jason, itu tidak berhasil. Tapi Anda punya ide yang lebih baik! Karena guru bahasa Inggris Anda mengira Anda sedang mengerjakan matematika, jika Anda mengabaikan semua angka dari program Anda, itu mungkin berhasil! Anda juga ingin menjaga program Anda sesingkat mungkin karena Anda seorang siswa yang malas dan tidak ingin banyak menulis di papan tulis.
Tulis program yang mematuhi aturan berikut:
- Program Anda harus mencetak 4 baris di atas 25 kali. Garis-garis harus ditampilkan dalam urutan itu, berulang. Total tepat 100 baris output (baris baru di akhir atau baris baru di awal tidak apa-apa).
- Anda tidak dapat menggunakan karakter
0123456789
. Guru Anda menjadi bingung oleh matematika dan akan memanggil Anda keluar! - Anda dapat menggunakan impor dan perpustakaan eksternal tanpa menghitung impor. Guru bahasa Inggris Anda tidak tahu tentang pemrograman. Jason bisa menyelamatkan banyak pekerjaan dengan tidak menulis
#include <stdio.h>
dan Anda tidak ingin melakukan kesalahan yang sama! - Skor program Anda dengan
byte
hitungan. Menang skor terendah!
Jawaban:
CJam,
109107106104103 byteDi atas adalah dump xxd reversibel.
Pengujian
Anda dapat membuat dan menjalankan kode di atas dengan menjalankan ini di juru bahasa online :
Untuk melihat kode yang dihasilkan (tanpa menjalankannya), hapus final
~
.Untuk menghitung jumlah byte (satu karakter adalah satu byte pada ISO-8859-1), ganti final
~
dengan a,
.Versi yang dapat dicetak (122 byte)
Setelah mendorong string (S), berikut ini dijalankan:
Golf moar
Setelah mendorong string yang tidak diinginkan (U), berikut ini dijalankan:
Ini mendorong string versi yang dapat dicetak. Sisa kode berfungsi seperti sebelumnya.
sumber
~
dengan,
untuk memverifikasi.]:+~
membuatnya berfungsi. Mengapa Anda tidak menambahkannya saja ke kode Anda?JavaScript (ES6) 164
Uji di konsol FireFox / FireBug.
sumber
Python:
188 173 160153Saya tidak banyak python, tapi ini sepertinya cukup pendek untuk saya.
Sunting: Jadi saya salah, itu tidak pendek sama sekali! Terima kasih atas bantuan dalam komentar: D
sumber
\
di\n
karena melarikan diri ...b
keprint
:%
memiliki prioritas lebih tinggi daripada*
.CJam,
151 140 135 132 130128 byte (Tweetable)Coba di sini
Saya dapat mempersingkat ini menjadi 110 byte dengan mengonversinya menjadi unicode, tetapi karena itu tidak mengalahkan solusi unicode lainnya, saya lebih suka tidak mengatakannya :)
sumber
:D
dilakukan emoticon di sana ?! Apakah Anda mengirim SMS kepada teman Anda selama penahanan? Pergi ke kantor kepala sekolah!T
alias untuk.\nThe
, lalu menghapus baris tambahan yang dihasilkan dari awal string output (cjam-fu saya tidak cukup baik untuk mengetahui apakah Anda dapat dengan mudah melakukan itu)PHP, 0 byte
Untuk menjalankan kode ini, Anda harus mengimpor perpustakaan yang dipanggil
data://text/plain,<?php...classroom.\n";
dengan ini:Dan Anda harus
allow_url_include
mengaktifkan diphp.ini
.Tidak ada lagi angka atau ekstensi, terima kasih untuk Dennis.
sumber
require_once "data://text/plain,The eighteen-hundreds...";
, yang tidak memerlukan sh , tidak menggunakan angka dan masih 0 byte.Rubi,
185180176 byteEDIT: Interpolasi string, terima kasih @ britishtea
Ini golf pertama saya, dan saya bukan Rubist (tapi saya sangat suka Ruby). Bagaimanapun, ini dia (disingkat, saran Doorknob).
sumber
s.split.size.next
menghemat 5 karakter (Anda tidak perlu menentukan ruang untuk dibagi).(s.split.size+1).times
akan lebih pendek 1 byte?Jawa
249231230222Jawaban pertamaku! Mengapa tidak mulai menggunakan bahasa yang saya kenal dengan baik.
Tidak disatukan
sumber
public
untuk kelas Anda dan menyingkatargs
menjadi satu karakter. Anda juga dapat melakukana++<':'
alih - alih menambahnya secara terpisah. Karena OP tidak menghitung impor, Anda dapat menyimpan sedikit lebih banyak denganimport static java.lang.System.*;
, maka Anda tidak perlu menulisSystem.
nanti (di mana ia diperhitungkan). Melakukannya, saya mendapatkannya sekitar 230. Anda mungkin ingin melihat halaman tips Java jika Anda belum.C 171
Pada awalnya, saya mencoba versi simplistic (189 byte), yang lebih baik daripada solusi C lainnya ...
yang kemudian saya optimalkan sedikit ...
sumber
char *
.a
kemungkinan karena defaultnyaint
, yang dapat menerimachar
nilai. Tidak sukab
kecuali saya menyebutnya sedikitchar[]
. VX, kompiler apa yang Anda gunakan?b
adalahint
juga, tapi itu memegang pointer ke string literal. Benar-benar ok di GCC (ada di mesin saya 4.8.2).for(a='a';++a<'z';)
JavaScript, ES6,
174 172154 byteMenggunakan
replace
trik @ edc65 . Terima kasih!Hanya berfungsi di Firefox terbaru (34 ke atas) karena penggunaan string template.
sumber
BrainFuck ( 1,597 karakter )
Ini masih bisa bermain golf lebih lanjut, jika ada yang tertarik.
Anda dapat menguji ini dan mengonfirmasi bahwa itu memberikan hasil yang benar sambil memenuhi semua aturan.
sumber
Perl - 145
Saya senang melihat begitu banyak jawaban! Inilah solusi Perl.
sumber
Karena dia sangat membenci matematika, mengapa tidak Mathematica (177)
sumber
Javascript ES6,
198193 byteGuru Anda tidak menginginkan angka, tetapi karena mereka adalah guru bahasa Inggris, mereka tidak tahu apa
Math.floor(Math.exp(Math.PI)+Math.E)
artinya.Lebih mudah dibaca:
Harus dijalankan di firefox terbaru
sumber
with(Math)alert("long string here".repeat(exp(PI)+E|[]))
(q='aaaaa'.length)*q
"\x18".charCodeAt()
:! (hardcode panah ke atas dan Anda akan menghemat satu ton!)Javascript -
178 Bytes176 BytesGolf pertamaku, kupikir aku akan mencobanya dengan operator yang sedikit memutar, tidak berjalan dengan baik seperti yang diharapkan, tapi oh well!
Karena saya sudah dalam tahanan, dan jelas memiliki masalah berperilaku sendiri ... Javascript - 71 Bytes
Yang ini mungkin akan membuat saya dalam kesulitan yang lebih dalam, tetapi, jika saya sudah menempatkan diri saya dalam penahanan, DAN saya berencana menipu penahanan saya, tampaknya saya tidak memiliki penilaian yang baik tentang bagaimana saya harus berperilaku di kelas. Mungkin jika saya dapat menarik salah satu dari guru saya, saya dapat menarik salah satu dari semua pegolf lain di luar sana.
Cepat! Pengguna Chrome / IE 11 / Firebug, buka konsol Anda KANAN SEKARANG dan cobalah.
(Tolong jangan terlalu menyakitiku, saya pikir itu lucu)
sumber
C # -
229216 Bytesusing
FTW gratis !Alternatif, jumlah byte yang sama (lebih banyak
using
penyalahgunaan, meskipun)sumber
a
':'-'!'
== 25), yang lebih pendek daripadaa.Length
, dan akan memungkinkan untuk dimasukkan seperti yang Anda sarankan. (Secara alternatif, lakukan seperti jawaban lain yang tampaknya, dan hanya berputar di antara!
dan:
, lucu bagaimana kita semua memilih karakter yang sama)Befunge-93,
268260256 (ukuran kisi: 72x6 = 432)Ini adalah pertama kalinya saya bermain golf, jadi saya pikir saya akan mencoba bahasa yang belum pernah dilakukan untuk masalah ini, karena saya tidak akan menambahkan apa pun sebaliknya. Karena ini kompatibel dengan Befunge-93 (cocok di dalam kisi 80x25 dan hanya menggunakan instruksi Befunge-93), itu juga dapat digunakan di Befunge-98. Untuk jaga-jaga, saya juga menghindari penunjuk melewati karakter non-instruksi selain spasi. Saya tidak dapat mengingat apakah spesifikasi benar-benar mendefinisikan karakter-karakter tersebut sebagai no-ops, dan saya tidak akan memiliki setan hidung dalam kode MY.
Anda tidak bisa benar-benar kode Befunge ungolf. Hal utama yang perlu diperhatikan di sini adalah bahwa Befunge mendorong karakter ke stack sebagai nilai ASCII mereka, membuatnya relatif mudah untuk merujuk ke angka tanpa secara harfiah merujuk kepada mereka. Di
"K"
sebelah kiri atas adalah 75, mengacu pada jumlah pengulangan kali jumlah klausa "the" per pengulangan; Saya menggunakan modulus dan beberapa kelicikan lain pada (salinan) nomor ini untuk menentukan jalur mana yang harus diambil melalui pencetakan pada setiap go-around.::-
adalah ungkapan yang bagus untuk nol, berguna untuk string yang mengakhiri nol; Saya menggunakannya dua kali di sini.Kadang-kadang pointer harus melewati tempat di mana saya mendefinisikan string, maka pilihan karakter tertentu yang digunakan untuk mendapatkan angka tertentu di beberapa titik.
Hal yang menyenangkan tentang banyak juru bahasa Befunge adalah Anda dapat menonton penunjuk panah di sekitar kotak, serta melihat nilai apa yang ada di tumpukan. Dengan begitu Anda dapat melangkah dan melihat bagaimana program ini bekerja sendiri, kurang lebih! Saya sarankan menggunakan http://befungius.aurlien.net/ jika Anda tidak memiliki juru bahasa Befunge sendiri.
Ini mungkin dapat dikupas sedikit (atau banyak) lebih banyak. Tolong beri saya umpan balik! Jika saya perlu memberikan penjelasan yang lebih baik, seseorang beri tahu saya; Saya baru dalam hal ini.
Edit - mencukur beberapa byte dengan menyingkirkan redirect yang tidak perlu ke baris terakhir ketika program berakhir (hanya menempatkan di
@
mana^
dulu).Suntingan lain - mencukur beberapa byte lagi di berbagai tempat, sebagian besar dengan tipu daya. (Juga menambahkan ukuran kisi, yang tampaknya menjadi tren dengan jawaban Befunge.)
sumber
re a time
suatu tempat?#
pada satu ujung baris untuk melewati karakter di ujung yang lain (dalam CCBI , misalnya,#
hanya melompati ruang tak terbatas di antara itu dan karakter di ujung yang lain), yang merusak program ini. Saya belum repot-repot kembali dan memperbaiki kiriman ini dengan pemikiran ini.1
digit di sana, yang tidak diizinkanPyth 135
136 140Perhatikan ruang trailing.
Menggunakan trik yang hampir sama dengan @Geobits dan teman-teman komentatornya dalam jawaban Python untuk membuat string. Sekarang juga gunakan beberapa jawaban ini .
Ini menggunakan variabel bawaan
G
, yang berisiabcdefghijklmnopqrstuvwxyz
dan mendapatkan satu kurang dari panjangnya untuk menghasilkan 25 keluaran.sumber
Ruby -
152141http://repl.it/2Om/6
sumber
String#*
untuk mengulangi garis 25 kali, bukanInteger#times
.puts"hi"
legal).Python, 165 byte
Itu bekerja dengan sangat baik bahwa panjang h adalah 25, itu tidak disengaja. =)
sumber
Python 2 - 143
Jawaban konyol:
Perhatikan bahwa jumlah lengkapnya adalah 162. Saya tidak memasukkan semua
from this import i
.Menggunakan penggantian yang mirip dengan strategi pyth saya, tapi saya tidak bisa menahan posting ini setelah menemukan kegembiraan mengimpor dari ini :)
sumber
from this import i
! Bagaimana kamu tahu tentang itu?import this
. Kemudian saya berpikir: "Apa lagi yang ada dalamthis
modul?" Jadi saya menelepondir(this)
. Lihatlah, bersama dengan kamus, string yang kacau, dan"!"
variabel, ada konstanta numerik ... sama dengan 25.PHP (
175157156 byte; 152 dengan unix EOF):Bukan solusi yang paling golf, tetapi pasti melakukan pekerjaan dan lebih kecil daripada beberapa upaya.
Ini kodenya:
Versi lama:
Ini berfungsi karena php siklus chars, dan kami hanya memeriksa apakah tidak
z
dan berhenti.(Satu keingintahuan adalah bahwa ketika php mencapai
z
, kemudian pergi keaa
.)sumber
Python 2 - 155
Catatan: karena karakter kontrol tidak muncul di SE, saya telah menggantinya dengan
\x19
.Versi Base 64:
sumber
from string import *
atau bagaimanapun disebut dengan Python[]
tanda kurung di baris pertama, yang secara implisit membuat tupel dan membongkarnya.ord('d')//len('aaaa') to before the string so you don't have to bracket it.
LiveScript - 181
Impor wajib:
Jika Anda ingin menjalankannya di bawah Node.js, instal paket
LiveScript
( tidaklivescript
) danprelude-ls
dari npm, gantialert
denganconsole.log
dan jalankanlsc prog.ls
, di manaprog.ls
berisi program.sumber
0123456789
"T-SQL: 206
Manfaatkan gabungan silang pada lima baris untuk menghasilkan 25 baris memilih frasa. Jeda baris penting untuk output.
sumber
Bash, 151 byte
Cukup banyak jawaban langsung dari jawaban Anda sendiri
sumber
C, 196 karakter
Ini bukan tugas yang mudah untuk kebaikan C. Memperhitungkan pola "% steen-ratusan ..." menyelamatkan saya dari dua karakter.
Spasi untuk kejelasan, termasuk tidak dihitung.
sumber
Ruby, 145
Penjelasan
String#upto
untuk mencetak garis 25 kali. Kisarannya"K".."c"
adalah 25 karakter.sumber
#{a="The "}
sebenarnya dikenakan biaya lebih banyak karakter!#{a}
sama panjangnya denganThe
Raket 173
Tidak Disatukan:
sumber
C,
215203199 byteTidak disatukan
Saya menggunakan sedikit pergeseran untuk beralih tanpa nomor.
a<<='\xC'+'\xD'
set ke 0b1 [25 nol]a>>=!!a
menggeser bit yang tepat untuk setiap kali kita mengulangi loopSunting:
a
sama dengan argc, jadi nilainya sudah 1 ketika program dijalankan tanpa argumen. Berubaha>>='\xB'-'\xA'
kea>>=!!'\xA'
yang lebih pendek 4 byte. Juga teks ditampilkan hanya 24 kali. Memperbaikinya. Kurung ekstra dihapus diwhile
.Sunting 2: diubah
!!'\xA'
menjadi!!a
. Tampaknya bekerja dan menyimpan 4 bytesumber
puts
untuk menyimpan lebih banyak byte.Kata-kata kasar, 191 byte
Bukan solusi terpendek, tapi tetap keren. Saya menulis sebuah subrutin untuk menulis tiga baris pertama, dan mendesainnya begitu menyebutnya dengan argumen kosong mengembalikan string sepanjang 25 karakter. Saya kemudian memberikan panjangnya ke repeater.
Tidak Disatukan:
Cobalah online
sumber