Mengingat 95 karakter yang dapat dicetak dalam ASCII plus baris baru, pisahkan menjadi dua kelompok yang sama, 48 karakter (selanjutnya disebut grup A dan grup B). Buat pemetaan satu-ke-satu pilihan Anda (Anda memiliki kebijaksanaan total) antara kedua kelompok. Dengan kata lain, A
mungkin memetakan ke a
, dan sebaliknya, tetapi A
mungkin juga memetakan ke >
dan sebaliknya, jika itu yang Anda butuhkan untuk program Anda.
Setelah Anda membagi ASCII menjadi dua kelompok, tulis dua program dan / atau fungsi, masing-masing hanya menggunakan karakter di masing-masing kelompok. Dengan kata lain, tulis satu program / fungsi yang hanya menggunakan karakter dalam grup A, dan program / fungsi lain yang hanya menggunakan karakter dalam grup B.
Program-program ini harus dapat menerima satu karakter sebagai input. Program yang ditulis dengan karakter dalam Grup A harus menampilkan / mengembalikan karakter yang sama jika inputnya adalah karakter grup A, dan karakter grup A yang dipetakan jika menerima karakter grup B; program Grup A harus selalu menampilkan karakter grup A. Demikian pula, program Grup B harus menampilkan karakter yang sama jika itu adalah karakter grup B, dan karakter grup B yang dipetakan jika inputnya adalah karakter grup A.
Itu mungkin tidak begitu jelas, jadi inilah contohnya. Jika Anda menganggap bahwa semua huruf kapital berada di grup A, dan semua huruf kecil berada di grup B, dan Anda telah memilih bahwa pemetaan satu-ke-satu Anda untuk huruf-huruf ini dari satu ke yang lain, maka: maka berikut adalah beberapa input / output sampel:
Program A:
Input Output
A A
D D
a A
q Q
Program B:
Input Output
A a
D d
a a
q q
Aturan lainnya:
- Kedua program tidak harus dalam bahasa yang sama.
- Mereka tidak perlu keduanya program atau keduanya fungsi; satu bisa berupa program, yang lain fungsi, itu bagus.
- Mereka tidak perlu bekerja dengan cara yang sama, memiliki panjang yang sama, seperti itu; mereka hanya harus memenuhi aturan lain di atas.
- Ya, hanya satu dari program Anda yang dapat menggunakan baris baru, dan hanya satu yang dapat menggunakan spasi (ini bisa sama, atau program lain).
- Anda tidak perlu menggunakan semua 48 karakter di setiap program.
Celah standar dilarang, seperti biasa. Semua program harus mandiri, tidak ada file yang berisi pemetaan yang Anda pilih.
Kriteria penilaian: golf kode . Secara khusus, jumlah byte teks dari dua program.
Silakan kirim jawaban Anda seperti ini:
Bahasa - # byte + Bahasa - # byte = # byte
Deskripsi pemetaan Anda yang jelas. Jika rumit, gunakan bagan seperti ini:
ABCDEFGHIJKLMNOPQRSTUVWXYZ (etc.) zyxwvutsrpqonmlkjihgfedcba (etc.)
Atau, Anda bisa menjelaskannya (48 peta pertama hingga 48 berturut-turut), diikuti dengan jawaban Anda seperti biasa.
sumber
+
dan>
, dan yang lainnya menggunakan-
dan<
. Maka Anda harus mencoba untuk menghasilkan operator yang hilang, seperti,
atau.
dalam program yang tidak dapat menggunakannya.Jawaban:
CJam - 11 byte + CJam - 25 byte = 36 byte
Karakter dipilih dalam grup bergantian 16:
Sangat keren bahwa beberapa pemetaan dapat diperoleh dengan tombol shift :)
Program A:
Cobalah online
Program B:
Cobalah online
Penjelasan:
Program A:
Program B:
sumber
\n
), itu tidak mudah untuk melihat tanpa memeriksa html. Anda dapat menambahkan sebuahi
di akhir program untuk melihat kode ASCII (atauci
untuk juga berurusan dengan input baris baru, karena menghasilkan string baris baru daripada karakter dalam kasus itu)_0=
ke0=_
sehingga selalu output karakterCJam -
46442611 byte + GolfScript -1421251159368474036 byte = 47 byteTerima kasih kepada Peter Taylor untuk bermain golf 6 byte dari program GolfScript (dan membuka jalan untuk lebih banyak lagi.)
Terima kasih kepada Dennis untuk bermain golf 15 byte dari program CJam dan 4 byte dari program GolfScript.
Grup A: semua karakter dengan kode karakter genap.
Grup B: semua karakter dengan kode karakter ganjil, plus baris baru.
Saya menggunakan pemetaan yang jelas antara keduanya, yaitu memasangkan karakter-karakter yang hanya berbeda sedikit paling signifikan, serta
~
dan\n
. Ini adalah peta lengkap (kolom-kolom):Program A (CJam, uji di sini ):
Program B (GolfScript, uji di sini ):
Penjelasan
Program A
(Sudah kedaluwarsa, akan diperbarui besok.)
Program ini harus mengubah kode karakter aneh menjadi genap, yaitu mengatur bit paling signifikan ke 0. Cara yang jelas untuk melakukan ini adalah bitwise DAN dengan 126 (atau 254 dll), tetapi lebih pendek untuk mengaturnya menjadi 1 (melalui bitwise ATAU dengan 1) sebagai gantinya dan kemudian mengurangi hasilnya. Akhirnya, kita perlu memperbaiki baris baru secara manual:
Program B
(Sudah kedaluwarsa, akan diperbarui besok.)
Program ini dapat dengan mudah mengatur bit paling signifikan ke 1 melalui bitwise ATAU dengan 1 sekarang. Tetapi harus memeriksa keduanya
\v
(kode karakter 0x0B) dan<DEL>
(kode karakter 0xFF) secara manual dan mengaturnya~
sebagai gantinya. Dalam GolfScript saya tidak memiliki akses ke eval, tetapi Anda dapat menambahkan string ke blok (yang kemudian menjadi bagian dari kode di blok itu), yang dapat saya petakan ke input dengan%
:Dan untuk kode yang dihasilkan di blok:
sumber
Java - 1088 bytes + Java - 1144 bytes = 2232 bytes
Terima kasih kepada @ durron597 untuk membantu bermain golf 1090 byte dari program pertama.
Bukti bahwa itu mungkin dilakukan dalam satu bahasa (dan non-esolang pada saat itu).
Gunakan trik unicode untuk mengonversi yang pertama ke semua karakter unicode. Yang kedua menggunakan refleksi untuk mendapatkan akses ke System.out untuk mencetak ke std. di luar. Itu tidak dapat menggunakan Anda karena itu digunakan dalam program pertama. Saya tahu ini bisa bermain golf lebih banyak, tetapi saya ingin memposting solusi yang valid terlebih dahulu.
Grup dipetakan secara sewenang-wenang, tetapi pada dasarnya, yang pertama hanya membutuhkan u, \, dan digit heksadesimal (dalam hal apa pun).
Grup:
Program pertama:
Setara dengan
Program kedua:
Cobalah di sini: https://ideone.com/Q3gqmQ
sumber
void x(int z)
, itu adalah karakter dalam rangkaian karakter pertama jugaTETAP! Pyth - 23 byte + Pyth - 30 byte = 53 byte
oops Memperbaiki kesalahan --- harap bersabarperpecahan ASCII yang sama dengan Martin:
Prog # 1: Tes Online
Prog # 2: Tes Online
sumber