Terinspirasi oleh pertanyaan ini sebelumnya hari ini , saya ingin melihat cara menarik berbagai bahasa pemrograman yang dapat mengubah numpad menjadi probabilitas. Umumnya, game berbasis ubin akan memungkinkan Anda menggunakan numpad untuk bergerak ke arah mana pun berdasarkan di mana karakter Anda saat ini. Ketika membuat AI untuk game-game ini, Math.random() * 8
tidak cukup, jadi saya harus sedikit kreatif untuk membuat gerakan terlihat dan terasa agak alami.
Numpad didefinisikan sebagai berikut:
7 | 8 | 9
- - - - -
4 | x | 6
- - - - -
1 | 2 | 3
Harap dicatat, 5 adalah nomor yang tidak valid, karena Anda tidak dapat pindah ke diri Anda sendiri.
Semua contoh akan menggunakan probabilitas ini: [50, 40, 30, 20, 10]
Jika saya ingin membuat probabilitas di sekitarnya 8
, akan terlihat seperti ini:
40 | 50 | 40
-- | -- | --
30 | xx | 30
-- | -- | --
20 | 10 | 20
Hasilnya akan [20, 10, 20, 30, 30, 40, 50, 40]
(dengan 5 dihilangkan) atau [20, 10, 20, 30, null, 30, 40, 50, 40]
(dengan 5 hadir)
Jika saya ingin membuatnya sekitar 1
, akan terlihat seperti ini:
30 | 20 | 10
-- | -- | --
40 | xx | 20
-- | -- | --
50 | 40 | 30
Hasilnya akan [50, 40, 30, 40, 20, 30, 20, 10]
(dengan 5 dihilangkan) atau [50, 40, 30, 40, null, 20, 30, 20, 10]
(dengan 5 hadir)
Anda dapat menulis program lengkap yang mengambil input dengan cara biasa (baris perintah, stdin) dan mencetak output, atau Anda dapat menulis fungsi dengan argumen angka, yang mencetak atau mengembalikan output. Program atau fungsi Anda harus menerima satu nomor - posisi untuk menghasilkan sekitar. Anda harus menggunakan probabilitas ini: [50, 40, 30, 20, 10]
(mereka tidak harus di-hardcode).
Kode terpendek dalam byte menang. Celah standar tidak diijinkan. Jawaban yang diposting di utas tertaut tidak diizinkan. Ruang tertinggal atau terdepan diizinkan. Anda dapat memperlakukan posisi 4
sebagai tidak ada atau kosong, tergantung pada preferensi Anda. Saya tidak terlalu pilih-pilih format output - cetak sebagai string yang dipisahkan koma atau sebagai array.
(Ini pertanyaan pertamaku, santai saja!)
Python - 115
a
adalah array dengan nilai-nilai dalam urutan sekitar numpad (berlawanan arah jarum jam dari 1), danb
memetakan angka pada numpad ke posisi di sekitarnya. Berdasarkan jumlah spasi di sekitar numpad untuk nomor input (ditentukan menggunakanb
), ia membuat array dengan banyak elemen yang dipindahkan dari depana
hingga akhir, kemudian menggunakanb
lagi untuk mengatur ulang elemen agar sesuai dengan angka numpad.sumber
/10
dan kemudian meletakkannya*10
di loop Anda.(a[c:]+a[:c])[e]
itu samaa[(c+e)%8]
ataua[c+e-8]
? Dan kemudian menghubungkannya denganc
menyederhanakan ekspresi.Pyth - 38 byte
Menggunakan teknik yang agak sama dengan jawaban Python kecuali dengan kompresi dasar untuk dua array.
Coba di sini online .
sumber
Jawa, 190
String v
memegang probabilitas (dibagi 10) dalam urutan berlawanan dengan input = 1 sebagai default 50.int[]i
menerjemahkan input menjadi indeks menjadi v. Misalnya,v.charAt(i[1])
adalah5
. Input 0 dan 5 tidak valid sehingga i [0] dan i [5] memiliki nilai placeholder 8 yang merupakan indeks untuk '\ 0' di akhir v.Saya memutar angka dalam v ke kanan dengan nilai i [n], dan kemudian mencetak probabilitas sebagai string yang dipisahkan koma.
sumber