Wawancara: The Front Nine
Ini adalah yang pertama dari serangkaian tantangan yang terinspirasi oleh pemrograman pertanyaan wawancara kerja.
Anda berjalan ke kantor tempat calon bos masa depan Anda duduk. "Ayo masuk dan duduk," katanya. Anda dengan gugup duduk, memastikan pakaian Anda yang tajam namun profesional bebas dari kerutan. Dia banyak bertanya kepada Anda, tentang pendidikan Anda, pengalaman kerja sebelumnya, dan sebagainya. Anda menjawabnya sebagian besar dengan jujur, menambahkan sedikit hiasan di sana-sini untuk membuat diri Anda terdengar lebih baik. Dia mencondongkan tubuh ke depan dan mulai berbicara lagi.
"Pernahkah kamu mendengar tentang kode golf?" Mengapa, ya, Anda suka kode golf, dan sering melakukannya di waktu luang Anda. "Hebat. Bagian terakhir dari wawancara adalah pemeriksaan teknis. Kamu akan ditugaskan menulis kode untuk menyelesaikan serangkaian masalah ..." Dia memberimu selembar kertas. Anda dengan cepat meliriknya. Peasy mudah. Sekarang mengapa dia bertanya tentang kode golf?
"Anda akan dinilai berdasarkan ukuran total solusi Anda untuk masalah ini. Jika Anda dapat skor lebih rendah dari semua kandidat lainnya, pekerjaan itu milik Anda." Oh "Seperti golf, ada 18 masalah, dipecah menjadi dua set 9. Jangan ragu untuk menggunakan bahasa apa pun yang Anda suka untuk menyelesaikannya; kami memiliki kompiler dan penerjemah untuk setiap bahasa yang Anda dengar, dan tentu saja beberapa yang Anda hindari Semoga beruntung! "
Tugas
Tugas 1: Tabel Multiplikasi
Diberikan angka n
sebagai input, output tabel perkalian untuk bilangan bulat positif dalam kisaran [1, n]
. n
akan berada dalam kisaran [1, 12]
. Semua angka harus rata kiri dalam tabel. Gunakan karakter x
untuk sudut kiri atas.
Contoh:
n=4
x 1 2 3 4
1 1 2 3 4
2 2 4 6 8
3 3 6 9 12
4 4 8 12 16
n=10
x 1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
Tugas 2: Ordinal RMS
Diberikan string karakter ASCII, menghasilkan rata- rata root-mean-square dari ASCII ordinals mereka. String tidak akan pernah berisi byte NULL (ordinal 0).
Contoh:
Input: The Interview: The Front Nine
Output: 95.08290393488019
Input: `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Output: 91.38101204135423
Tugas 3: Gerakan Proyektil
Mengingat kecepatan dan sudut awal dengan cakrawala proyektil yang ditembakkan dari permukaan tanah, menghasilkan jarak horizontal yang akan dilalui sebelum mendarat. Kecepatan awal akan diberikan dalam meter per detik, sudut akan diberikan dalam derajat, dan jarak akan dalam meter. Asumsikan gravitasi Bumi ( g=9.81 m/s/s
), dan abaikan efek relativistik. Demi masalah ini, Anda mungkin menganggap bumi itu datar (Anda tidak perlu mempertimbangkan kelengkungan Bumi saat membuat perhitungan Anda). Sudut yang diberikan akan berada dalam kisaran [0, 90]
. Jawaban Anda harus akurat untuk setidaknya dua tempat desimal (pembulatan diperbolehkan).
Contoh:
velocity=50, angle=45
Result: 254.84 (rounded)
velocity=10, angle=60
Result: 8.82798576742547
Tugas 4: etaoin shrdlu
Diberikan string karakter ASCII yang tidak dapat dicetak (ordinals dalam kisaran [32,127]
), output string, dengan karakternya diurutkan berdasarkan frekuensi mereka dalam urutan menurun. Dalam kasus dasi, dipesan oleh ASCII ordinal, naik.
Contoh:
Input: "Hello, World!"
Output: "llloo !,HWder"
Input: "Programming Puzzles and Code Golf"
Output: " oooPPaaddeeggllmmnnrrzzCGfisu"
Tugas 5: Indeks Fibonacci
Diberi nomor, tentukan apakah itu adalah angka Fibonacci, dan jika ya, output indeksnya (mulai dari 1) dalam urutan. Jika bukan angka Fibonacci, output 0. Dalam kasus 1, yang berada dalam urutan dua kali, output kejadian paling awal (indeks 1).
Contoh:
Input: 1
Output: 1
Input: 144
Output: 12
Input: 4
Output: 0
Tugas 6: Anagram
Diberikan tiga string huruf Inggris huruf kecil ( [a-z]
), menghasilkan string yang menggunakan semua huruf dalam string pertama, dimulai dengan string kedua, dan berakhir dengan string ketiga. Jika string semacam itu tidak dapat dibangun, output string kosong. String input akan selalu setidaknya sepanjang satu huruf. "Tengah" dari string output (antara string awalan dan postfix) mungkin kosong, jika string awalan dan postfix bersama-sama menggunakan semua huruf dalam string sumber.
Contoh:
Input: geobits bi es
Possible output: bigtoes
Input: mariatidaltug digital trauma
Output: digitaltrauma
Input: mego go lf
Output: (empty string)
Tugas 7: Mengisi Kosong
Diberikan daftar string dan karakter isian, output hasil melapisi semua string dengan panjang string terpanjang dengan karakter isian, diurutkan dalam urutan naik dengan panjang asli string, menjaga urutan asli dalam case dasi. Anda harus dapat menangani daftar dari setiap panjang yang terbatas, yang berisi string dari setiap panjang yang terbatas, hanya dibatasi oleh batasan memori.
Contoh:
Input: ["hello","world","this","is","a","test"], 'x'
Output: ["axxxx","isxxx","thisx","testx","hello","world"]
Input: ["I'm","a","lumberjack","and","I'm","okay"], '!'
Output: ["a!!!!!!!!!","I'm!!!!!!!","and!!!!!!!","I'm!!!!!!!","okay!!!!!!","lumberjack"]
Tugas 8: Membuat Perubahan
Diberi nomor dalam kisaran [0.01,0.99]
, output jumlah masing-masing dari 4 koin AS standar yang harus digunakan untuk mewakili nilai ini sehingga jumlah total koin diminimalkan. Input akan selalu memiliki tepat 2 tempat di belakang desimal.
Referensi nilai koin:
Penny: 0.01, Nickel: 0.05, Dime: 0.10, Quarter: 0.25
Contoh:
Input: 0.75
Output: [0,0,0,3]
Input: 0.23
Output: 3 pennies, 0 nickels, 2 dimes, 0 quarters
Tugas 9: Menggabungkan Rentang
Diberikan daftar terbatas 2-tupel yang berisi bilangan bulat yang mewakili rentang, menampilkan hasil penggabungan semua rentang yang tumpang tindih atau berdekatan. Semua rentang akan setidaknya dari panjang 1, dan nilai awal akan selalu kurang dari nilai akhir. Urutan output tidak masalah.
Contoh:
Input: (2,3), (4,5), (6,9), (0,7)
Output: (0,9)
Input: (-3,4), (2,5), (-10,-4)
Output (-10,-4), (-3,5)
Input: (2,3), (5,6), (6,8)
Output: (5,8), (2,3)
Aturan
- Ini adalah kode-golf , jadi jawaban tersingkat (dalam byte) menang.
- Skor Anda akan menjadi jumlah jumlah byte untuk semua solusi Anda.
- Celah standar dilarang.
- Input dan output dapat dilakukan dengan cara apa pun yang dianggap standar untuk bahasa Anda.
- Anda dapat menulis program atau fungsi lengkap untuk setiap tantangan, dan dapat bertukar antara keduanya melintasi tantangan.
- Anda harus menggunakan bahasa yang sama untuk semua tantangan. Jika perbedaan versi cukup signifikan untuk dianggap entri terpisah dalam tantangan, Anda harus menggunakan versi yang sama secara keseluruhan. Misalnya, jika Anda menggunakan Python, Anda harus menggunakan Python 2 atau Python 3 untuk semua tantangan.
- Anda harus menyelesaikan semua tantangan. Jawaban yang hanya menyelesaikan beberapa tantangan akan dianggap tidak kompetitif.
- Anda dapat menggunakan builtin bahasa atau perpustakaan standar.
Papan peringkat
Cuplikan Stack di bagian bawah posting ini menghasilkan leaderboard dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
Jawaban:
Pyth,
155153149142141131130 byte4 byte berkat @FryAmTheEggman
1, 5 dan 4 byte berkat @Jakube
J+1SQp\xtjmsm.[`*dk\ 4JJ
Buat tabel perkalian dari daftar
[1, 1, 2, 3, ...]
, yaitu+1SQ
, lalu cetak ax
dan hapus karakter pertamanya.@.Om^Cd2z2
Mudah.
c*.t.tyvw7Z*QQ9.81
Menggunakan rumus
sin(2 theta) * v^2/a
, di manatheta
adalah sudut,v
adalah kecepatan awal dana
adalah9.81
o_/zNSz
Mudah.
hxeM.u,eNsNQU2Q
Hasilkan pasangan fibonacci, cari indeks input di dalamnya, tambahkan satu.
IqSzSJj.-zsQQJ
Gunakan pengurangan bagwise untuk menghapus awalan dan akhiran dari kata, lalu letakkan sisa kata di tengah. Jika hasil ini bukan permutasi dari input, jangan cetak itu.
C.tolNQz
Sortir menurut panjangnya. Diisi transpose. Transposis lagi.
Jsttz/L~%Jd[25T5 1
Hitungan koin output dalam urutan
[quarters, dimes, nickels, pennies]
.Hapus 2 karakter pertama input dan cor ke int untuk mendapatkan sen. Simpan ke
J
. Untuk setiap nomord
dalam daftar[25, 10, 5, 1]
, pasca-assignJ%d
keJ
, kemudian menghasilkan nilai/Jd
dengan nilai asliJ
. Mencetak.C-M.p,JS{srMQhMJ
Ubah tupel menjadi rentang, gabungkan menjadi satu daftar, deduplikat dan urutkan. Simpan ini untuk
J
. BentukJ, hMJ
danhMJ, J
, di manahMJ
iniJ
dengan setiap elemen meningkat 1. Lakukan pengurangan dalam kedua kasus. Yang pertama adalah ujung bawah rentang, yang terakhir adalah ujung yang lebih tinggi. Ubah posisinya menjadi berpasangan dan cetak.sumber
CJam, 162
qi),0Xt_ff{*s4Se]}N*s0'xt
q_:i:mh\,mq/
(© Dennis)q~P*90/ms\_**9.81/
q$e`{0=~}$e~
(© Dennis)1_{_2$+}99*]qi#)
qS/(1+1$s{1$#Lt}/)@@**
q~{,}$_z,f{W$e]}p;
q2>i25A5]:md]W%p
q~${_0=2$1=>{+$3%}|}*]p
Dennis setuju untuk bergabung :)
sumber
CJam, 223 byte
Tugas 1, 35 byte
Cobalah online.
Tugas 2, 12 byte
Cobalah online.
Tugas 3, 27 byte
Cobalah online.
Tugas 4, 12 byte
Cobalah online.
Tugas 5, 17 byte
Cobalah online.
Tugas 6, 25 byte
Cobalah online.
Tugas 7, 19 byte
Cobalah online.
Tugas 8, 33 byte
Cobalah online.
Tugas 9, 43 byte
Cobalah online.
sumber
Haskell, 650 byte
Tugas 1, 88 byte:
Tugas 2, 76 byte:
Tugas 3, 28 byte
Tugas 4, 60 byte:
Tugas 5, 64 byte
Tugas 6, 93 byte
Tugas 7, 81 byte
Tugas 8, 73 byte
Tugas 9, 87 byte (salinan jawaban MtnViewMark yang tak tahu malu dari tantangan serupa)
sumber
Mathematica 10.3, 465 byte
Semua ini adalah fungsi anonim. Juga, terima kasih kepada Martin untuk membantu bermain golf, karena saya seorang pemula di Mathematica.
Tugas 1, 69 byte
\[Transpose]
adalah simbol 3 byte "transpose".Tugas 2, 13 byte
atau
(√ adalah 3 byte). The
RootMeanSquare
built-in tidak cukup cukup singkat ...Tugas 3, 18 byte
Tugas 4, 57 byte
Tugas 5, 33 byte
atau
atau
Tugas 6, 178 byte
(saat ini memiliki bug)Kurang bermain golf:
Manipulasi string mengerikan ...
Tugas 7, 39 byte
Tugas 8, 46 byte
atau
Tugas 9, 12 byte
Interval yang diteruskan ke konstruktor secara otomatis disatukan. Kalahkan itu.
sumber