Tulis kode yang menggunakan string sebagai input, dan menampilkan nilai true atau falsey tergantung pada apakah string mengikuti aturan ini atau tidak:
Jika Anda menumpuk setiap karakter di atas satu sama lain, konversikan ke biner dan jumlah setiap kolom, maka semua jumlah harus identik. Anda dapat menganggap string input hanya berisi karakter ASCII yang dapat dicetak (titik kode 32 - 126).
Sebagai contoh:
Input O5vy_+~
harus mengembalikan nilai kebenaran, karena representasi binernya adalah:
1001111 | O
0110101 | 5
1110110 | v
1111001 | y
1011111 | _
0101011 | +
1111110 | ~
-------
5555555 <- Sum of bits in each column. Should give a truthy value.
Input PPCG
harus mengembalikan nilai falsey, karena representasi binernya adalah:
1010000 | P
1010000 | P
1000011 | C
1000111 | G
-------
4020122 <- Should give a falsey value
Twist adalah: Kode Anda harus mengembalikan nilai kebenaran jika digunakan sebagai input ke fungsi / program Anda. Yaitu kode harus mematuhi aturan yang sama seperti di atas (kode Anda dapat berisi karakter yang bukan ASCII 32-126).
Program / fungsi Anda hanya perlu menangani ASCII yang dapat dicetak sebagai input. Jika kode Anda mengandung sesuatu yang lain, 8 bit, 16 bit encoding, Unicode, set karakter yang dibuat khusus (atau sesuatu yang lain), maka representasi binernya harus mematuhi aturan yang sama, tetapi kode Anda tidak perlu menanganinya sebagai input.
Ini kode-golf , jadi aturan standar berlaku.
sumber
Jawaban:
JavaScript (ES6),
123122120110 byteDi bawah ini adalah hexdump dengan jumlah bit.
Demo
Tampilkan cuplikan kode
sumber
MATL ,
109 byteInput adalah string yang diapit dengan tanda kutip tunggal (jika inputnya berisi qoute tunggal, lepas dari itu dengan menduplikasi).
Output adalah
3
sebagai kebenaran dan tidak ada (output kosong) sebagai falsy.Cobalah online!
Kode dalam biner adalah sebagai berikut:
Penjelasan
sumber
Jelly ,
1110 byteCobalah secara Online! Atau lihat tes dan input-sendiri (kode semua ASCII yang dapat dicetak, yang memiliki nilai yang sama di halaman kode Jelly, seperti yang terlihat di bawah).
Bagaimana?
sumber
Jelly ,
1110 byteTidak menggunakan no-ops atau komentar.
Cobalah online!
Rincian biner
Bagaimana itu bekerja
sumber
OBUSE
karena kedengarannya sepertiABUSE
.Mathematica, 88 byte
Berisi banyak karakter yang tidak dapat dicetak di antara tanda kutip. Memiliki 49 bit masing-masing.
Inilah hexdump:
sumber
Oktaf,
5352 byteMembuat penulisan ulang lengkap membantu saya golf kode 5 byte, tapi saya harus menambahkan lebih banyak no-ops, menjadikannya net-save hanya 1 byte.
Saya tidak dapat menambahkan tautan TIO, karena tidak ada penerjemah online yang mengimplementasikan kotak alat komunikasi yang diperlukan
de2bi
. Mengubahnya sebagaidec2bin
gantinya akan biaya 4 byte (2 untuk kode kerja, dan dua no-ops).Saya tidak menemukan cara untuk menghindari 27 no-ops. Semua nama fungsi dan tanda kurung berada di antara baik di bawah 64, atau lebih tinggi dari 96, yang berarti semua karakter "perlu" memiliki 1 di posisi ke-6 (dari kanan, 2 ^ 5). Saya punya solusi dengan hanya 23 no-ops, tetapi kode itu sendiri lebih panjang. Kode aktualnya adalah 25 byte, dan memiliki jumlah kolom berikut saat menghitung bit dari persamaan biner:
Ada 22 bit di posisi ke-6 dari kanan (2 ^ 5), dan hanya 6 bit di posisi ke-4 dari kanan (2 ^ 3). Itu berarti, kita harus menambahkan setidaknya 16 byte, untuk mendapatkan 6 hingga 22. Sekarang, karakter komentar
%
menambahkan sedikit ke posisi ke-6, meningkat menjadi 23. Semua karakter ASCII yang dapat dicetak membutuhkan setidaknya satu dari dua bit atas menjadi1
. Oleh karena itu, menambahkan 17 byte akan memberi kita setidaknya 27 bit di masing-masing dari dua "tempat teratas" (2 ^ 6 dan 2 ^ 5). Sekarang, kami memiliki 27 bit di dua tempat teratas, dan 22 bit di sisanya. Untuk mencapai kesetimbangan, kita harus menambahkan 10 byte, untuk mencapai 32 bit pada setiap posisi.Penjelasan kode baru (52 byte):
Vektor yang hanya mengandung 1s (true) dievaluasi menjadi true dalam Oktaf, dan vektor yang mengandung setidaknya satu nol dievaluasi menjadi false dalam Oktaf.
Penjelasan kode lama (53 byte):
Vektor yang hanya mengandung 1s (true) dievaluasi menjadi true dalam Oktaf, dan vektor yang mengandung setidaknya satu nol dievaluasi menjadi false dalam Oktaf.
sumber
JavaScript (ES6),
139111107 byteBerisi
816361 dari setiap bit.sumber
Scala, 149 byte
Pemakaian:
Hexdump:
Tidak Terkumpul:
Penjelasan:
sumber
J , 45 byte
Cobalah online! Termasuk kasus uji untuk sebagian besar pengiriman yang diajukan, bersama dengan kode sumber.
sumber
Haskell , 118 byte
Cobalah online! Penggunaan:
_Z "some string"
mengembalikan salah satuTrue
atauFalse
.Ada beberapa karakter yang tidak dapat dicetak dalam komentar di baris terakhir, jadi di sini ada rangkaian program menggunakan karakter yang lolos:
Setiap bit terjadi 68 kali.
Kode terpendek yang saya buat adalah 82 byte:
Namun jumlah bit untuk kode ini
[33,28,41,48,20,79,46]
begitu79 - 20 = 59
no-ops ditambah 2 byte untuk memulai komentar juga diperlukan, dengan total 143 byte.Saat menata ulang program saya menemukan bahwa menggunakan huruf besar sebagai nama variabel membantu untuk meratakan jumlah karena mereka tidak memiliki bit di set posisi ke-6. Karena Haskell tidak mengizinkan nama variabel untuk memulai dengan huruf besar, mereka harus diawali dengan
_
, yang juga tidak mengatur bit ke-6.Dalam melakukannya saya berakhir dengan solusi di atas yang memiliki 97 byte sebelum menambahkan no-ops dan bist sum
[50,47,56,56,48,68,60]
, jadi(68 - 47) = 21
, jadi hanya 21 byte yang perlu ditambahkan dalam komentar.sumber
PHP,
959391 byteSaya sangat senang bahwa nama fungsi PHP tidak peka huruf besar kecil!
di mana
*
harus diganti dengan ASCII 151 (0x97). (PHP akan mengeluh tentang karakter kontrol dalam kode - terlepas dari\r
dan\n
, tapi saya butuh sesuatu dengan bit 4 set, jadi saya menambahkan 128.)+1 byte untuk ASCII yang benar-benar dapat dicetak: Gunakan
_7
saja.Jalankan dengan
echo '<input>' | php -nR '<code>'
atau coba online . Keluaran adalah1
untuk kebenaran, kosong untuk kepalsuan.sumber
Python 2, 117 byte
Semua "spasi" adalah tab untuk mengurangi jumlah 0x20 bit.
Berisi 66 bit masing-masing. (Tidak ada yang
'%07b'
dijelaskan dalam masalah ini .)Hex dump:
sumber