Sebagai semacam bagian 2 dari Hello, World! (Setiap karakter lain) , tulis sebuah program sedemikian rupa sehingga ketiga program ini mencetak "Halo, Dunia!": Seluruh program, karakter ke-1, ke-3, ke-5, dll. Dari program Anda, dan ke-2, ke-4, ke-6, dll.
Jika program Anda adalah:
abc
def
Seharusnya menampilkan "Halo, Dunia!", Tetapi begitu juga seharusnya
acdf
Dan
b
e
Tidak ada solusi dengan "Hello, World!" Bawaan.
code-golf
source-layout
hello-world
Leo Tenenbaum
sumber
sumber
Jawaban:
kode mesin x86, 378 byte
PROG.COM Unduh dan jalankan dalam emulator MS-DOS , misalnya DOSBox .
Anda juga dapat mengunduh LEFT.COM dan RIGHT.COM
Cara kerjanya dan cara menjalankannya
Lihat jawaban untuk bagian satu
Sihir
Jika Anda ingin menjalankan perintah 0xAB opcode dengan satu parameter 0xCD , Anda menulis
Generator
Jalankan kode, dapatkan hex. Konversikan ke biner
Tampilkan cuplikan kode
sumber
Python 3 , 115 byte
Setiap karakter aneh
Setiap karakter genap
Cobalah online!
Ini mungkin bisa menjadi jauh lebih pendek, tapi saya senang saya berhasil membuatnya bekerja dengan Python. Mirip dengan jawaban vroomfondel pada bagian pertama.
Membosankan jawaban 93 byte
Setiap karakter aneh
Setiap karakter genap
Cobalah online!
sumber
> <> , 45 byte
Atau hanya karakter genap:
Atau hanya karakter aneh:
Cobalah secara online: orisinal , genap , peluang .
Versi asli mendorong "
!!ddllrrooWW oolllleeHH
" ke tumpukan, kemudian ikan memantul di antara>~o <
, yang menghapus surat, mencetak dua, menghapus dua, mencetak dua, menghapus dua, dll. Kedua program setengah adalah program pencetakan string yang cukup standar. Bagian yang sulit adalah menggabungkan"
dan!
beralih masuk dan keluar dari mode string di ketiga program dengan benar.sumber
Befunge-98 , 43 byte
Cobalah online!
Hanya yang aneh:
Cobalah online!
Hanya yang genap:
Cobalah online!
Penjelasan
Program lengkap:
Dalam program ganjil,
2
hilang, sehingga10x
benar - benar tidak melakukan apa-apa (itu menetapkan delta(1,0)
yang merupakan defaultnya). Sisa dari program ini kemudian sama.Dalam program genap, kita hanya mendorong
2
bagian awal yang bisa kita abaikan sepenuhnya. Sisa dari program ini sama seperti sebelumnya.sumber
Gammaplex , 46 byte
Lihat disini.
Penerjemah. Mungkin perlu beberapa perubahan untuk bekerja dalam kompiler modern.
sumber
Mathematica, 65 byte
Itu melempar beberapa peringatan, cetakan
Hello, World!
, dan kembaliNull PPrriinntt[["" HHeelllloo, Null, "" WWoorrlldd!!]]
. Ketika dijalankan sebagai program (bukan di REPL), nilai kembali tidak akan dicetak.Setelah menghapus karakter genap:
Mencetak
Hello, World!
, dan kembali"el,Wrd" Null Pit
.Setelah menghapus karakter aneh:
Mencetak
Hello, World!
, dan kembaliNull ol! rn[Hlo]
.sumber
kode mesin x86, 73 byte
Terinspirasi oleh solusi Евгений Новиков , saya pikir itu seharusnya bisa dilakukan dengan sedikit trik, yaitu, hanya melompat-lompat ke kode "disjoint" yang lain untuk ketiga varian. Saya masih mencoba dengan varian cerdas yang digunakan
lodsb; lodsb
sebagai titik pusat (jadi hanya satu string konstan yang diperlukan untuk semua varian)Jika saya ingat dengan benar dari masa kecil saya, model mungil COM dimulai dengan
DS=CS=SS
dan kodenya dimuat mulai dariCS:0100h
. Saya tidak menganggap itu dijamin bahwa kode tersebut dimuat ke dalam blok memori memusatkan perhatian (jika dijamin, saya bisa menjatuhkan dua byte).Seharusnya pembongkaran kode panjang
Pembongkaran kode aneh
Pembongkaran kode genap:
sumber
8A
di 0116 seharusnyaBA
, dan string diakhiri oleh$
, bukan NULL.Retina , 48 byte
Cobalah online!
Posisi ganjil:
Cobalah online!
Posisi genap:
Cobalah online!
Penjelasan
Program lengkap:
Ini tidak melakukan apa-apa. Ini
|
bukan opsi konfigurasi yang ada. ItuG
membuat ini menjadi tahap grep, tetapi benar-benar tidak ada yang harus dipahami dan regex kosong, jadi ini tidak melakukan apa-apa. Tujuan dari tahap ini adalah untuk memiliki dua umpan garis di depan utama "Halo, Dunia!" baris sehingga salah satu dari mereka selalu selamat reduksi. Alasan untuk membuat ini menjadi rusa grep adalah bahwa kita perlu mengimbangi paritas garis, dan tahapan grep hanya membutuhkan satu garis.Ini mengubah string kerja (kosong) menjadi output yang diperlukan dengan setiap karakter digandakan.
Ini tidak melakukan apa-apa. Regex mencoba untuk mencocokkan a
_
dan&
setelah akhir string yang tentu saja tidak mungkin. Kami akan membutuhkan karakter-karakter itu dalam versi yang diperkecil, sekali lagi untuk berurusan dengan kesalahan lineishing yang hilang.Akhirnya, kami menghapus karakter duplikat dengan menggantinya
(.)\1
dengan$1
. Init?
tidak pernah digunakan tetapi akan diperlukan lagi dalam versi yang dikurangi.Program aneh:
Tidak
G
dapat mencocokkan input kosong, tapi itu sebabnya kami memiliki|
untuk mengizinkan pencocokan kosong alternatif. Ini mengubah string kerja kosong menjadi output yang diinginkan.Ini menggantikan garis bawah dengan
()1?$
, tetapi tidak ada garis bawah dalam string, jadi ini tidak apa-apa.Program genap:
The
`
hanya menunjukkan string konfigurasi kosong, jadi kita lagi menggunakan regex kosong untuk menggantikan string bekerja dengan output. Kali ini kami juga menyisipkan$&
tapi itu pertandingan itu sendiri, yang kosong, tentu saja, jadi tidak ada apa-apa.Ini akan menggantikan karakter apa pun yang diikuti oleh tab dengan
1
, tetapi kami tidak memiliki tab, jadi ini juga no-op.sumber
Lua , 106 byte
Cobalah online!
Alternatif 1:
Cobalah online!
Alternatif # 2:
Cobalah online!
Skrip alternator: Cobalah online!
sumber
CJam , 44 byte
Cobalah online!
sumber
PHP, 70 byte
Karakter ganjil:
Karakter genap:
sumber
Haskell , 92 byte
Cobalah online! Sepertinya penyalahgunaan komentar terlalu banyak untuk ditangani oleh penyorotan sintaks.
{- ... -}
adalah komentar inline atau multi-line, sedangkan--
memulai komentar baris.Karakter ganjil:
Cobalah online!
Karakter genap:
Cobalah online!
sumber
Zsh , 54 byte
Cobalah online!
Program utama berhasil mengeksekusi pernyataan pertama, sehingga pernyataan setelah boolean
||
diabaikan.Untuk aneh / bahkan, yang
<<<Hello\ world!
menjadi salah seorang terselesaikan<<heredoc
atau<file
disediakan di stdin. Either way,||
menjadi|
, dan jadi apa pun yang dihasilkan oleh perintah pertama disalurkan ke dan diabaikan olehecho
.sumber
LOGO , 71 byte
(program memiliki baris tambahan)
Dua versi yang dihapus:
dan
(program memiliki baris tambahan)
Untuk penjelasan apa
pr
dan apa yanger
harus dilakukan, lihat posting ini . Dalam hal ini,er
adalah feed dengan kata menentukan nama prosedur.Itu
\
adalah karakter escape dalam Logo, yang akan keluar dari baris baru setelah akhir komentar, oleh karena itu buat baris kedua (rHlo ol!e |
) dari program yang dihapus kedua sebagai komentar.sumber
Javascript, 68 byte
Karakter Ganjil:
Karakter genap:
Versi modifikasi dari jawaban saya pada yang lain.
sumber
l
diHHeelllloo
.Perl 5 , 61 byte
60 byte kode +1 untuk
-p
.Cobalah online!
Setiap Aneh Byte
Cobalah online!
Setiap Even Byte
Cobalah online!
sumber
BotEngine ,
180178 byteBerdasarkan jawaban saya untuk pertanyaan ini .
Karakter ganjil (perhatikan beberapa spasi tambahan di baris terakhir):
Karakter genap:
sumber
Pesona Rise , 52 byte
Cobalah online!
Runic biasanya tidak terlalu baik dalam berurusan dengan radiasi karena memiliki karakter kontrol aliran dihapus secara acak membuat eksekusi penelusuran menjadi sangat besar, tetapi radiasi yang dapat diprediksi seperti setiap karakter lainnya? Mudah, kami hanya menyandikan dua program yang dibalik satu sama lain dan disisipkan, kemudian tempelkan salinan ketiga untuk eksekusi dasar dan kontrol yang mana dijalankan dengan satu karakter. Dalam program 2, salinan ketiga adalah sampah yang tidak pernah dilihat, dan dalam program 3 itu mempertahankan tanda kutip, memungkinkan untuk muncul tanpa mencetaknya.
Program 1 hanya menjalankan bagian ini:
Program 2 hanya menjalankan bagian ini:
Seperti ini:
Cobalah online!
Program 3 hanya menjalankan bagian ini:
Seperti ini:
Cobalah online!
The
"drW,le"
porsi dijalankan, tetapi~
segera muncul itu dari tumpukan, melestarikan output yang diinginkan.Secara naif akan muncul bahwa konversi jawaban> <> akan menghasilkan program yang lebih pendek, dengan bobot 45 byte:
Namun, Runic memiliki satu batasan yang> <> tidak memiliki: ukuran stack maksimum 10 + IP mana (yang awalnya 10). Dan
!!ddllrrooWW oolllleeHH
berisi 24 karakter, menyebabkan IP berdarah mana sampai habis sebelum menjalankanR
perintah, sehingga tidak ada output untuk program dasar.Cobalah online!
sumber