Adegannya adalah:
Peter berada di gym bersama temannya Brian ketika Brian tiba-tiba membutuhkan inhalernya. Brian berhasil memberi tahu Peter kode ke kunci kombinasinya sebelum ia jatuh di lantai.
Saat Peter sampai ke loker Brian dan melihat apa yang ditunjukkan indikator, Stewie menyergapnya dan menyemprotkan semprotan merica ke wajahnya, sehingga membutakan Peter.
Peter sekarang harus mencoba membuka kunci tanpa melihatnya. Dia mulai memutar tombol ke kanan, menghitung angka sementara dia melewatinya. Dia kemudian, pada nomor yang benar mulai memutar tombol ke kiri, masih menghitung, dan akhirnya memutarnya ke kanan sampai kunci terbuka.
Tantangan:
Tulis fungsi / program yang mengambil dua input, kombinasi dari Brian, dan posisi indikator. Keluarkan angka-angka yang harus dihitung oleh Peter.
Aturan:
- Kombinasi dan posisi indikator harus merupakan argumen yang terpisah.
- Input dapat berupa dari command prompt atau sebagai argumen fungsi.
- Output harus dicetak ke layar / ditampilkan (tidak ke file)
- Asumsikan bahwa posisi awal tidak sama dengan angka pertama, dan ketiga angka dalam kombinasi itu unik
- Ini adalah kunci yang ditunjukkan pada gambar di bawah ini, dengan angka yang mungkin: 0-39.
Instruksi:
Untuk membuka kunci di bawah ini, Anda harus mengikuti serangkaian instruksi:
- Anda harus tahu kode Anda. Anggap saja (38, 16, 22) untuk saat ini.
- Putar tombol 3 kali ke kanan (melewati angka awal tiga kali), lalu berhenti ketika angka pertama (38) sejajar dengan indikator
- Putar tombol 1 putaran penuh ke kiri, melewati angka pertama, dan berhenti ketika angka kedua (16) sejajar dengan indikator.
- Putar tombol putar ke kanan dan berhenti ketika angka ketiga (22) sejajar dengan indikator
- Tarik kunci ke bawah
Contoh:
Input
38 16 22
33
Output
33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22
Aturan golf kode standar berlaku.
Solusi yang diposting kemudian masih bisa menang jika lebih pendek dari jawaban Dennis.
function combination(code){alert("Help! Someone open this locker, the combination is "+code+"!")}
Jawaban:
CJam,
5239 byteCobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Groovy,
189175 byteAsumsikan indikator diteruskan sebagai arg0 dan kombo dilewatkan sebagai arg1, arg2, dan arg3 pada baris perintah ...
sumber
Perl 5 , 129 + 1 (-a) = 130 byte
Cobalah online!
Bagaimana?
sumber
Python 2, 262 byte
Rasanya sangat lama. Tetapi ada juga banyak perubahan terjadi.
Cobalah online!
Saya pikir saya dapat menggabungkan beberapa bagian dengan lebih baik di baris terakhir saya, tetapi saya masih baru dengan kode golf dan saya tidak tahu bagaimana menangani kombinasi daftar itu dengan cara yang singkat.
Adakah Ide untuk meningkatkan ini?
sumber
Haskell ,
135112 byteCobalah online!
Disimpan 23 byte berkat Laikoni
sumber
l s t=
dengan mendeklarasikan operator infikss#t=
sebagai gantinya. Ia juga bekerja selama lebih dari dua argumen:(a%b)c s=
.s+1
.