Mengamati nilai-nilai biner yang dicetak sebagai oval dan tongkat tidaklah mudah ... Untuk membantu hal itu, Anda harus menulis fungsi (atau program) yang mencetak angka dalam representasi biner khusus.
Jadi saya ingin mengambil angka, katakan 3 ( 00000011
) dan output bit dalam format yang ditentukan pengguna, misalnya dengan pasangan yang dipisahkan oleh ruang:
00 00 00 11
atau, katakanlah, dalam urutan terbalik dan dengan beberapa dekorator, misalnya:
11_00_00_00
Selain itu, harus ada kemungkinan untuk menunjukkan '0' dan '1' sebagai karakter khusus untuk membedakan mereka dengan lebih baik, misalnya:
XX oo oo oo
Jadi tantangannya adalah untuk menulis kode yang melakukan itu semua dalam spesifikasi berikut.
Spesifikasi
Fungsi mengambil input seperti ini: f (A, mask, nol, ones)
Parameter:
A - nomor input - bilangan bulat (tidak bertanda) apa pun dalam rentang 0-255.
mask - parameter string yang mendefinisikan konstruksi output.
nol - string dengan panjang yang sama, mendefinisikan mesin terbang 'nol' untuk setiap slot output.
yang - string dengan panjang yang sama, mendefinisikan mesin terbang 'satu' untuk setiap slot output.
Aturan untuk konstruksi output:
Lihatlah gambar ini dengan contoh cermat untuk memahami bagaimana output dihasilkan:
Jadi hanya satu digit dalam topeng yang diuraikan dan diganti dengan bit A yang sesuai, karakter lain dibiarkan apa adanya . Lebih lanjut, jika nilai bit yang diambil adalah 1 maka akan muncul di output akhir sebagai "X" dan jika itu 0 maka akan muncul sebagai "o". Dalam contoh di atas keempat bit yang diambil adalah "1" jadi kita melihat "X" di semua slot.
Jika nomor input adalah 128, maka, secara logis, outputnya adalah X foo bar ooo
. Karakter dalam parameter "nol" dan "yang": karakter ASCII apa pun yang dapat dicetak, menganggap mereka selalu sejajar dengan mask.
Catatan :
- Bit diindeks 0: bit 0 adalah MSB.
- Asumsikan bahwa angka 8,9 tidak diperbolehkan dalam string mask.
- Input Strings termasuk karakter ASCII yang dapat dicetak.
- 'Nol' dan 'yang' disejajarkan dengan topeng.
- Untuk karakter khusus / pengubah dalam bahasa Anda: kami dapat menganggap mereka tidak akan muncul di string input.
Untuk kejelasan, lihat lebih banyak contoh.
Input -> Contoh output
Keluarkan semua 8 bit dalam urutan umum dengan pembatas ruang, dalam notasi oval-and-stick yang umum:
mask = "0123 4567"
zeros = "0000 0000"
ones = "1111 1111"
A=1 -> 0000 0001
Output dalam urutan terbalik, dalam notasi dasbor dan mesin terbang:
mask = "| 7654 3210 |"
zeros= " ---- ---- "
ones = " ssss ssss "
A=1 -> | s--- ---- |
A=3 -> | ss-- ---- |
A=128-> | ---- ---s |
Beragam notasi dalam satu output, misalnya untuk data yang dikemas:
mask = "0 | 123 4567"
zeros= " --- ----"
ones = "X kkk ssss"
A= 15 -> | --- ssss
A= 16 -> | --k ----
A= 32 -> | -k- ----
A= 128 -> X | --- ----
A= 255 -> X | kkk ssss
Pola berulang:
mask = "| 7 66 555 4444 |"
zeros= " . .. ... .... "
ones = " 0 00 000 0000 "
A= 0 -> | . .. ... .... |
A= 1 -> | 0 .. ... .... |
A= 2 -> | . 00 ... .... |
A= 3 -> | 0 00 ... .... |
A= 4 -> | . .. 000 .... |
Memperbarui
Aturan telah sedikit disederhanakan - program harus mencetak satu angka saja (bukan array / daftar angka seperti yang diusulkan pada awalnya).
A
terjadi, karena itu sama dalam semua kasus uji