pengantar
Anda memainkan permainan yang cocok, di mana koin dimasukkan di bagian atas dan jatuh ke bawah (ke koin atas) karena gravitasi.
Jadi ini
O <- inserting this coin
OO O
OOOOO
akan menjadi ini
O
OO O
OOOOO
Sekarang bayangkan seseorang memutar papan searah jarum jam. Berikut ini akan terjadi:
1. Papan diputar
OOO
OO
O
OO
O
2. Koin jatuh karena gravitasi
O
O
OO
OO
OOO
Tugas Anda
Tugas Anda adalah mensimulasikan rotasi papan dengan menulis program atau fungsi. Demi kesederhanaan, kami hanya berurusan dengan satu jenis koin (itu bukan permainan yang cocok yang menarik, bukan ...). Anda dapat mengasumsikan bahwa gravitasi diterapkan hanya setelah rotasi selesai. Papan diputar searah jarum jam.
Memasukkan
Input akan berupa string, yang berisi 3 jenis karakter:
- O (modal o) ATAU 0 (nol) - koin (Anda memutuskan solusi mana yang didukung)
- (spasi) - bidang kosong
- \ n (baris baru) - akhir baris
Input mewakili kondisi dewan. Anda dapat mengasumsikan, input terbentuk dengan baik dan berisi status board yang valid (tidak ada koin yang mengambang). Input dapat berupa parameter fungsi, atau dapat dibaca dari input standar atau dari file.
Keluaran
Output adalah keadaan baru dari papan setelah rotasi. Output berisi 3 jenis karakter yang sama dengan input. Output dapat dikembalikan dari fungsi Anda atau dapat ditulis ke output standar atau ke file.
Sampel
Input1:
O
OO O
OOOOO
Output1:
O
O
OO
OO
OOO
Input2:
O O
O O
Output2:
OO
OO
Anda dapat menggunakan bahasa apa pun dan perpustakaan standar dari bahasa yang dipilih. Program terpendek dalam byte menang.
sumber
Jawaban:
GolfScript,
1412 karakterMasukan harus diberikan pada STDIN, karakter untuk koin dapat berupa karakter yang bukan spasi. Coba di sini . Terima kasih kepada Peter karena menunjukkan pengurangan dua karakter.
sumber
transpose
di Ruby yang dapat menangani array dengan panjang berbeda ...([nil]*a.map(&:size).max).zip(*a)
. Tidak bagus untuk bermain golf.-1%
dengan$
." "
.Javascript (E6) 103
Coba pertama, hanya operasi matriks. Setiap baris dalam string input harus diisi.
Cukup bertele-tele.
Kode palsu
sumber
[...x]
sebelumnya. Disebut apakah itu?spread
[ developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Ruby 2.0, 59 karakter
Input melalui stdin, menganggap semua saluran memiliki panjang yang sama. Ini mungkin jauh lebih lama dari yang diperlukan. Tapi setidaknya itu bisa dibaca ...
sumber
$<.map
sebagai gantinya.1..-1
), saya hanya memilih 50 baris dimulai dengan yang kedua (1,50
).J -
493124 byteSaya pikir mungkin ada rotasi yang tidak perlu di sana, tetapi jika tidak berfungsi dengan baik. Ini adalah fungsi yang mengambil input seperti yang ditentukan, koin menjadi
O
. Tidak diperlukan spasi spasi tambahan di input.Versi baru, terinspirasi oleh jawaban Javascript edc65 :
Penjelasan:
Versi lama:
Penjelasan:
Contoh (perhatikan bahwa string multiline dimulai dengan
0 : 0
dan diakhiri dengan braket):sumber
Haskell - 86
Baru belajar, jadi saya yakin ini bisa diperbaiki.
Input sampel:
Output sampel:
sumber
Python 2 (69)
(79)Mengambil input yang diisi dengan spasi sehingga semua garis memiliki panjang yang sama. The
split
menciptakan arrat dari setiap baris. Thezip
efektif transposes array. Kemudian,sorted
jenis tupel dalam urutan leksikografis, menyebabkan semua koin jatuh ke bawah. Akhirnya, kami mencetak setiap baris, mengubahnya kembali menjadi string, meskipun kami harus membaliknya terlebih dahulu. Melakukanprint'O'*c.count('O')
adalah setara dan menggunakan jumlah karakter yang sama.Contoh dijalankan:
sumber
C,
167119 byteVersi yang lebih pendek ini (sayangnya?) Jauh lebih jelas daripada yang asli juga.
sumber
Racket: 130
Ini mengharuskan Anda membuat pad dengan spasi sehingga garis-garisnya sama.
sumber
C # -
209174 bytesBenar, saya harus mencoba golf Kode ini di beberapa titik saya rasa. Menciptakan fungsi (r) yang memutar papan dan mencetaknya. Saya kira saya sedikit curang ketika saya mencetak array char saya, tetapi jika Anda tidak tahu mengapa Anda tidak boleh marah :)
Terima kasih kepada ProgramFOX untuk tipsnya :)
Curang
sumber
char[]
dany
akan mengurangi jumlah karakter Anda menjadi 192 karakter. Juga, tidak benar-benar diperlukan untuk memberikan kata kuncistatic
saat mengirim jawaban di sini. Menghapusnya akan mengurangi jumlah karakter Anda menjadi 185 karakter.