Ini adalah kontes golf pertamaku.
Apa yang kamu butuhkan
Bangun saya, dalam jumlah sesingkat mungkin, sistem kendali jarak jauh AC saya. Kamar saya terlalu dingin sekarang, dan saya kehilangan remote saya.
Sekarang, saya tidak ingin Anda benar-benar membangunnya atau apa pun, hanya bermain golf ini:
Peningkatan suhu yang lambat, mulai dari 40 derajat, dan berakhir tepat pada 72. Waktu kenaikan harus selalu 500 milis per kenaikan. Itu bisa menunggu 500ms lagi di akhir. Saya lebih suka berhenti. Peningkatan itu sendiri harus naik dua kali setiap kali, seperti jarak jauh saya.
Anda tidak harus menghapus layar. Anda harus memiliki baris baru.
Apa yang harus terjadi?
Contoh output (semua yang ada di tanda kurung tidak boleh di-output).
40
(wait 500 millis)
42
(wait 500 millis)
44
(..repeat until 72..)
72
(stop or wait 500ms)
Perlu diingat Ini adalah golf pertama saya, jadi saya minta maaf jika ini terlalu sulit untuk golf. :(
Semoga beruntung, pegolf!
Jawaban:
Utilitas Bash + linux, 19
seq
menghasilkan output numerik.pv
ratelimits ke 2 baris / detik.sumber
-q
menekan pergi ke STDERR, jadi saya tidak berpikir Anda membutuhkannya.Minecraft 1.9.0+,
204162 byte +5836282420 blok =262240232186182 blytesSolusi ini diturunkan, dan tidak dapat dilihat secara keseluruhan dalam satu, atau bahkan dua tangkapan layar. Menggunakan dua gangguan dan menyalahgunakan dua fitur permainan lainnya
Solusi ini menggunakan prinsip yang sama dengan yang di bawah ini, hanya 4 blok desain yang lebih kompak.
Menyalahgunakan fakta bahwa blok perintah rantai (blok hijau) tidak dapat ditenagai oleh redstone, hanya dengan singal dari blok perintah impuls (oranye).
Menyalahgunakan piston fakta butuh 0,30 detik untuk memperpanjang sepenuhnya, dan redstone hanya perlu 0,10 detik untuk mendaftarkan sinyal.
Juga menyalahgunakan kesalahan berlipat ganda untuk mematikan timer (TNT): redstone di sebelah timer (TNT) tidak hanya diberi daya, tetapi juga berpikir bahwa TNT adalah redstone lain dan memperkuatnya.
Di atas semua pelanggaran ini, shortener sinyal (hal di bawah TNT) adalah salah satu digunakan, setelah itu akan didukung perubahan bentuk, yang memungkinkan untuk melewatkan sinyal melalui ke "incrementer" (paling atas blok orange)
Sedikit penjelasan tentang fungsi dari bagian-bagian yang berbeda dapat dilihat pada solusi yang lebih lama (tetapi yang terbaik di bagian bawah). Anda juga dapat mencobanya secara offline! (solusi disederhanakan bertambah 4, hanya bekerja di 1.11+) dengan menjalankan perintah ini di blok perintah .
Solusi lama, Minecraft 1.9.0+, 186 blytes:
Karena TNT biasanya meledak setelah 3.0s di Minecraft, TNT harus ditempatkan dengan perintah (
/setblock
) dengan sekering yang ditentukan. Juga menggunakan desain yang lebih kompak untuk menghapus blok perintah yang berlebihan (mengandung 42 byte) dan redstone terhadap versi yang lebih lama. Saya yakin ini tidak bisa lebih rendah ...Solusi yang lebih lama, Minecraft 1.9.0+, 232 blytes:
Ups, saya mengetahui peningkatan solusi yang lebih lama ini pada 4 ...
Menggunakan fitur rantai blok perintah 1.9 (green block thing) untuk menyimpan blok. Juga menggunakan pemendek sinyal yang lebih kompak daripada solusi yang lebih lama
Solusi yang lebih tua, Minecraft 1.7.0+, 240 blytes:
Menggunakan timer yang lebih ringkas (TNT) kemudian solusi pertama (di bawah).
Solusi terlama, Minecraft 1.7.0+, 262 blytes:
Ini sangat lama karena cara Minecraft menangani variabel:
Untuk mendefinisikan variabel (int):
scoreboard objectives add <variable> dummy
Untuk menetapkan nilai ke variabel (setiap entitas termasuk pemain memiliki nilai variabel sendiri):
scoreboard players set <entity> <variable> <value>
*
dapat digunakan<entity>
untuk memilih semua entitas dan menyimpan byte.hanya variabel yang ditentukan yang dapat digunakan
nilai variabel harus diatur ke angka, bukan variabel
Untuk menambah var1 oleh var2:
scoreboard players operation <entity> var1 += <entity> var2
<entity>
harus berupa entitas tunggal, mis.@p
tidak*
Tangkapan layar adalah milik saya sendiri, dua lisensi di bawah WTFPL dan lisensi SE apa yang memutuskan untuk digunakan hari ini (saat ini
cc by-sa 3.0 with attribution required
) :-)sumber
Vim,
24, 23 byte / penekanan tombolSatu byte disimpan berkat @Kritixi Lithos!
Ditulis dari ponsel saya, diuji dalam vim seluler (yang tampaknya merupakan hal yang nyata).
Berikut ini gif dari itu berjalan:
Dan inilah penjelasan perintah-demi-perintah:
sumber
s
dalamms
adalah opsional, Anda dapat menghapusnya untuk menyimpan byte :)JavaScript (ES6), 52 byte
sumber
f=(i=40)=>setTimeout(i>70||f,500,i+2,console.log(i))
. Sayangnya, masih sama 52 byte.50
byte karena Anda tidak perlu menghitungf=
berdasarkan pada konsensus meta bahwa deklarasi fungsi anonim diizinkan?f=
diperlukan karena fungsi perlu memanggil dirinya sendiri (sebagai parameter pertama kesetTimeout
).Jelly ,
1312 byteCobalah online! Program Jelly dibungkus dengan skrip Bash untuk mengawali setiap baris output dengan cap waktu.
Bagaimana itu bekerja
Setelah iterasi terakhir, nilai akhir dari 72 dicetak secara implisit dan program keluar.
sumber
Perl 6 , 30 byte
Maaf sepertinya kode un-golfed, saya tidak melihat cara untuk membuatnya lebih pendek ...
Versi yang berhenti tepat setelah nomor terakhir, akan menjadi 37 byte:
sumber
36
?.say&sleep(.5) for 40,42...72
29 byte{
kurung mengikuti ekspresi lain tanpa spasi putih, ditafsirkan sebagai awal dari subkrip hash ("array asosiatif"). Perl 6 ketat seperti itu, karena tata bahasanya sengaja dirancang untuk memungkinkan one-pass parsing kode sumber dengan (hampir) tidak ada backtracking.Pyth - 12 byte
Sangat sederhana, menggunakan for for dari 0-17.
sumber
TI-Basic (CE atau CSE saja), 16 byte
Perhatikan bahwa banyak perintah adalah token byte tunggal.
sumber
For(
,Pause
,End
, Dan titik dua pada awal garis semua byte tunggal.MATL , 14 byte
Cobalah di MATL Online! Anda mungkin perlu memuat ulang halaman tersebut jika tidak berfungsi pada awalnya.
Penjelasan
Versi lama (sebelum perubahan spesifikasi), membersihkan layar
Cobalah di MATL Online!
sumber
Dyalog APL , 20 byte
{
fungsi anonim⎕DL
menunda....5⊣
setengah (satu detik) daripada nilai⎕←
cetak (dengan baris baru)⍵
argumen}¨
diterapkan untuk masing-masing38+
tiga puluh delapan plus2×
dua kali⍳17
bilangan bulat dari 1 hingga 17sumber
C dikompilasi dengan Dentang 3.8.1 di Linux,
625958 byte2 byte disimpan berkat @ranisalt
59 byte
62 Bytes
sumber
** ... **
dalam markup, sedangkan header tradisional di situs ini menggunakan# ...
. Saya telah mengedit jawaban Anda sehingga Anda dapat melihat bagaimana hasilnya.s<72
menyimpan byte lain.Gores, 5 blok
(ruang disk 56.0kb)
(maaf untuk resolusi rendah!)
Cukup jelas, sungguh. Nilai variabel ditampilkan dalam kotak di "panggung".
sumber
Mathematica, 34 byte
Program lengkap. Tidak membawa input dan output ke STDOUT.
sumber
R, 49 byte
Solusi yang sangat sepele tetapi itu berhasil.
sumber
for
-loop sama panjangnya.Perl 6 , 27 byte
say
mengembalikanTrue
, yang dipaksa ke numerik1
ketika dibagi dengan2
.Shenanigans Unicode dapat menurunkannya hingga 23 karakter:
Tapi itu 29 byte UTF-8-encoded.
sumber
Python 2,
57 5655 BytesSUNTING:
-1 Byte berkat Mega Man
-1 Byte, terima kasih kepada Flp.Tkc
sumber
Ruby, 33 byte
sumber
C #, 95 byte
Ini adalah loop sederhana, menunggu 500ms ekstra di akhir.
sumber
QBIC , 21 byte
QBIC memulai loop-FOR, berjalan dari 44 ke 72 dan menambah penghitung dengan 4 pada setiap loop. Kemudian tidur selama 1 detik. QBasic tidak memiliki kontrol yang lebih rumit
sleep
, jadi saya telah menambahkan.
untuk mensimulasikan pemberian.5
sebagai argumen.sumber
Kotlin, 47 byte
Saya kira itu tidak dikatakan dalam pernyataan masalah bahwa solusi harus benar-benar mengandung selisih dua, jadi
40+2*i
legal di sini.Jika ditulis sebagai sumber Kotlin biasa dengan
main
:(77 byte)
UPD : Di Kotlin 1.3,
args:Array<String>
dapat dihapus, jadi lebih sedikit 18 byte.Dan dalam Skrip Kotlin, seluruh program akan menjadi
(47 byte)
sumber
Ruby 31 byte
Cobalah online!
sumber
Haskell, 67 byte
Jika Anda ingin menggunakan ghc saja, Anda dapat menyimpan beberapa byte dengan mengimpor
GHC.Conc
dan menggunakanthreadDelay
bukanusleep
.sumber
php, 38 byte
menggunakan garis bawah sebagai pembatas. Jalankan dengan
-nr
.sumber
Clojure, 54 byte
Kaki ketiga. Hanya mengulangi rentang, mencetak dan tidur setiap iterasi. Tidur di akhir.
Tidak Disatukan:
Versi yang tidak tidur pada akhirnya, 66 byte
Catatan, ini adalah program lengkap karena instruksi tidak menentukan. Tambahkan byte ke masing-masing jika fungsi diperlukan.
sumber
Racket 46 byte
Tidak Disatukan:
Perintah untuk dijalankan:
(f)
sumber
Oktaf,
3835 byteDisimpan 3 byte berkat @LuisMendo dengan mengubah
endfor
keend
Cobalah online!
Saya baru mengenal Octave, jadi solusi ini mungkin masih bisa dimainkan lebih lanjut. Ada tips yang diterima!
Tidak disatukan
sumber
Python 2,
5758 BytesSunting
Dihitung sebagai 57 byte pada perangkat saya, tetapi TIO mengatakan 58 sekarang saya kembali pada mesin saya sendiri sehingga itulah tawaran terakhir saya. Yang cukup menarik, TIO tampaknya tidak menghargai batas waktu dan hanya menunggu dan kemudian mencetak seluruh daftar sekaligus. Bekerja pada QPython untuk Android dan Python 2 pada kotak Ubuntu saya jadi itu cukup baik untuk saya.
Cobalah online!
Akan menjadi
5859 di Python 3 jadi tidak mengalahkan @ sonrad10.sumber
range(...)
R,
4442 byteLangsung untuk-loop, ada kemungkinan cara golf. (Juga, mencoret 44 masih teratur 44 ...)
sumber
F #, 60 byte
async{for i in 40..2..72 do printfn"%d"i;do!Async.Sleep 500}
Ini adalah ekspresi async, untuk menjalankannya meneruskannya ke
Async.Start
atauAsync.RunSynchronously
.sumber
Noodel , 10 byte tidak bersaing
Tidak dapat bersaing karena Noodel lahir setelah tantangan diciptakan :(
Cobalah:)
Bagaimana itu bekerja
Tidak ada versi Noodel yang mendukung sintaks yang digunakan dalam jawaban ini. Ini adalah versi yang benar:
sumber