Memasukkan
Anda diberi peta 2D dengan bola dan tanah di dalamnya. Ini terlihat seperti ini:
1 5 2
3
4
__________________________
Setiap angka adalah bola, dan itu _
adalah permukaan tanah. _
Karakter garis bawah tidak diperbolehkan di garis lain selain garis permukaan tanah. Hanya ada spasi, baris baru dan angka yang 0-9
diizinkan di atas permukaan tanah. Anda tidak dapat mengasumsikan bahwa baris terakhir adalah permukaan tanah - garis kosong di bawah permukaan tanah diizinkan. Anda juga dapat menambahkan spasi, untuk mengisi baris kosong, jika itu membantu Anda.
Bola dapat memiliki angka dari 0
hingga 9
, dapat ditempatkan di atas satu sama lain, tetapi tidak di bawah tanah. Nomor bola akan menjadi unik.
Asumsikan bahwa setiap karakter adalah satu meter .
Dapatkan peta dari pastebin!
Test case 1 - harus menampilkan sesuatu seperti ini
Test case 2 - harus menghasilkan hasil yang sama seperti peta pertama
Tantangan
Tantangan Anda adalah membaca peta seperti itu dari file atau dari stdin
- Anda diizinkan untuk menggunakan cat balls.txt | ./yourexecutable
- dan output kecepatan setiap bola ketika menyentuh tanah.
Berikut rumus untuk kecepatan:
Asumsikan itu h
adalah perbedaan nomor baris antara nomor baris ground, dan nomor baris bola, dan itu g
sama dengan 10m/s^2
.
Keluaran
Anda harus menampilkan setiap jumlah bola dan kecepatan di m/s
permukaan tanah. Misalnya N - Vm/s
, di mana N
nomor bola dan V
kecepatannya. Anda juga dapat menampilkan array jika mau.
Selamat coding! :)
Jawaban:
MATL ,
31302725 byteInput adalah array char 2D dengan
;
pemisah baris:Cobalah online! Atau sertakan inisial
t
dalam kode untuk menampilkan peta agar lebih jelas.Berikut ini adalah contoh-contoh uji lainnya: pertama , kedua .
Penjelasan
sumber
C,
125122121 byteKompilasi & jalankan dengan
gcc -w golf.c -lm && cat balls.txt | ./a.out
.sumber
0 ... 9
muncul dalam file teks. Pokoknya, +1, karena tidak menunjukkan ini adalah kesalahan saya_
. Namun, ini bisa diperbaiki dengan satu byte tambahan (!=
bukan<
).C -
194 (-5)150137 byteDengan sedikit lebih banyak waktu dan pemikiran, saya bermain golf 44 byte
Terima kasih kepada orlp karena membantu saya menghemat 13 byte
Saya akan mulai dengan kode C saya:
Dan versi yang dapat dibaca manusia:
Kompilasi dan jalankan seperti itu:
gcc -o balls ballsgolf.c -lm && cat 1.txt | ./balls
Keluaran
sumber
~(c=getchar())
bukan(c=getchar())!=EOF
.if (x != -1)
adalah sama denganif (~x)
(pada mesin pelengkap dua) karena~-1
(unik)0
. Dalam C golf tidak pernah digunakanwhile(cond)
, karenafor(;cond;)
hanya sepanjang dan memberikan lebih banyak peluang untuk bermain golf. Dalam contoh Anda ini bisa menjadifor(;~(c=getchar());n=c==95?l:n)b[c]=(l+=c==10);
.l=1
dapat dielakkan dengan membuatl
argumen pertamamain
, karena runtime C meneruskan sejumlah argumen ke utama sebagai argumen pertama (argc
), dan ketika Anda memanggil program tanpa argumen baris perintah (./a.out
), laluargc = l = 1
.n=0;
tidak perlu, karena bilangan bulat global secara otomatis diinisialisasi ke 0. Jadin;
sudah cukup.Pyth,
27262524 byteCobalah online!
sumber
Matlab,
100968990 byteBanyak byte yang disimpan berkat Luis Mendo
Masukkan format:
Penjelasan:
sumber
Python 3, 84 byte
Versi 6, 84 byte: (Terima kasih untuk Leaky Nun!)
Versi 5, 91 byte:
Versi 4, 92 byte:
Versi 3, 99 byte:
Versi 2, 102 byte:
Versi di atas mengambil array string sebagai input.
Versi 1, 140 byte:
Ini mengambil direktori file sebagai input dari pengguna.
sumber
1 for l in i
->1for l in i
(n-1)*20
->~-n*20
print
panggilan itu?e
, karena kemudian tokenizer Python akan mencoba untuk menguraikannya sebagai notasi ilmiah floating point (misalnya1e5
). Contoh yang gagal:f = lambda n:-1if n<0else 1
. Contoh yang gagal di kedua versi Python adalah0or 1
, karena tokenizer berpikir0o
memulai angka oktal.Python 3, 84 byte
Fungsi anonim yang menerima input dengan argumen sebagai string multi-garis dengan semua baris kosong diisi dengan spasi, dan mengembalikan array di mana setiap elemen berbentuk [nomor bola, kecepatan].
Bagaimana itu bekerja
Cobalah di Ideone
sumber
f = MyAnswer
, dan kemudian menelepon menggunakanf(x)
. Ada konsensus bahwa tidak perlu menyebut lambdas . Omong-omong, tantangan yang bagus!JavaScript (ES6) 93
Edit 2 byte yang disimpan thx @Jacajack
Fungsi dengan string multiline sebagai parameter input. Output tidak diurutkan (karena ini tidak diminta)
Uji
sumber
sqrt(x)
lebih pendek dari itupow(x,.5)
?