Pengukur Golf Kode © 2019
Hexdumps digunakan dengan xxd
tampilan seperti ini:
00000000: 666f 6f20 6261 7220 7370 616d 2065 6767 foo bar spam egg
00000010: 730a s.
Tugas Anda adalah mengubah hexdump dalam bentuk ini menjadi jumlah byte yang digunakan.
Aturan:
- Celah yang biasa dilarang.
- Ini adalah kode-golf , jadi jawaban terpendek yang valid dalam byte menang.
- Anda mungkin atau mungkin tidak menyertakan baris baru di akhir teks (
0a
). Ini berarti bahwa jika hexdump berakhir di baris baru (0a
), input yang mungkin memiliki output dikurangi satu. - Input kosong (secara harfiah tidak ada: daftar kosong / string / dll.) Harus menampilkan 0.
- Masukan dapat diambil dalam bentuk apa pun
- Input akan valid ASCII tanpa karakter kontrol
- Input harus mengandung seluruh hexdump
Kasus uji:
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 2120 4865 Hello, world! He
00000010: 6c6c 6f2c 2077 6f72 6c64 210a llo, world!.
mengembalikan 28 atau 27
00000000: 0a .
mengembalikan 1 atau 0
00000000: 6368 616c 6c65 6e67 650a challenge.
mengembalikan 10 atau 9
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 21 Hello, world!
mengembalikan 13
mengembalikan 0 (Ini benar-benar tidak ada: daftar kosong / string / dll.)
Penjelasan akan bagus untuk bahasa yang tidak standar.
code-golf
string
hexadecimal
gadzooks02
sumber
sumber
xxd
diberi string kosong, tidak menghasilkan apa-apa.objdump
pembongkaran ataunasm
daftar untuk jawaban kode mesin.) Saya kira saya harus mempostingnya di kotak pasir ...Jawaban:
Retina 0.8.2 , 8 byte
Cobalah online! Penjelasan:
Hapus 51 karakter pertama dari setiap baris. (Garis hanya dapat memiliki antara 52 dan 67 karakter, jadi ini selalu cocok sekali per baris.)
Hitung sisa karakter non-baris baru.
7 byte jika input kosong tidak harus didukung:
Cobalah online! Penjelasan:
Hapus 52 karakter pertama dari setiap baris. (Garis hanya dapat memiliki antara 52 dan 67 karakter, jadi ini selalu cocok sekali per baris.)
Hitung 1 lebih dari jumlah karakter yang tersisa (termasuk baris baru).
sumber
&`.{52}
.tcsh , 12 byte
Cobalah online!
sumber
V (vim) , 7 byte
Cobalah online!
Penjelasan:
Hexdump:
sumber
Retina , 7 byte
Ini menghitung jumlah total string single-line panjang 52. Mungkin bisa melakukan sesuatu yang mirip
%52,`.
, tapi saya gagal menemukan cara untuk memperbaikinya.Cobalah online!
sumber
&`.{52}
untuk Retina 0.8.2.APL (Dyalog Extended) , 18 byte
Program lengkap. Meminta daftar string (yaitu daftar karakter).
Cobalah online!
⎕
cepat49↑¨
ambil 49 karakter pertama dari masing-masing(
...)¨
terapkan fungsi tersembunyi berikut untuk masing-masing:⊢
argumen⊆
potong karakter yang ada≠
berbeda dengan karakter padding (spasi)1↓
letakkan "kata" pertama∊
ϵ daftar (ratakan)≢
menghitung2÷⍨
bagi dengan duasumber
Jelly , 5 byte
Tautan monadik yang menerima daftar garis yang menghasilkan jumlah byte integer.
Cobalah online!
Bagaimana?
sumber
C (gcc) ,
6455 byteCobalah online!
9 byte dicukur berkat YSC!
Berikut ini adalah versi yang lebih rapuh yang terinspirasi oleh solusi JavaScript Arnauld yang mungkin gagal untuk input lama:
C (gcc) , 50 byte
Cobalah online!
sumber
return r
kel=r
main
), seharusnya dimungkinkan untuk menyebutnya berkali-kali.r;s[];f(l){while(*s=0,gets(s),l=strlen(s))r+=l-51;l=r;}
while()
memiliki jumlah byte yang sama denganfor(;;)
. Jadi;while()
satu byte lebih panjang darifor(;;)
.Python 3,
4846 byteInput diteruskan sebagai string ke fungsi. Fungsi ini menambah panjang input (termasuk baris baru), kemudian kurangi 52 untuk setiap baris.
Cobalah online
sumber
f=
dapat dipindahkan ke header sebagai `f =`, hanya menyisakan lambda sebagai kode dan menyimpan dua byte: Cobalah online!f=
adalah kebiasaan yang saya ambil dari server perselisihan Python.Japt
-x
, 5 byteInput sebagai array garis.
Cobalah
sumber
Perl 6 , 18 byte
Cobalah online!
Anonim Apa pun lambda yang mengambil daftar garis dan mengembalikan jumlah jumlah karakter, mengurangi 51 untuk setiap baris
sumber
05AB1E ,
86 byteCobalah online!
Masukan sebagai daftar string.
sumber
Bahasa Formula IBM / Lotus Notes, 53 byte
Tidak ada TIO untuk Formula jadi di sini adalah screenshot dari kasus uji:
Rumusnya adalah dalam bidang yang dihitung yang memberikan nilai setelah "Pengembalian".
Penjelasan
Ini adalah demonstrasi yang baik tentang cara Formula akan secara rekursif menerapkan fungsi ke daftar tanpa perlu loop. Rumusnya dalam bidang yang dihitung pada formulir yang sama dengan bidang input yang dapat diedit `i '.
@Left
dan@Right
memungkinkan pembatas string atau sejumlah karakter untuk digunakan. Karena itu kami mencari di sebelah kanan:
dan kemudian ke kiri tempat pertama dari dua spasi. Karena Formula melihat baris baru sebagai pemisah daftar, ia akan menerapkan ini pada setiap baris dalam input.@Explode
setara dengansplit
fungsi dan standar untuk ruang,,
atau;
. Sekali lagi ini diterapkan untuk setiap baris di lapangan tetapi kali ini hasilnya digabungkan menjadi satu daftar.@Length
kemudian akan diterapkan ke setiap anggota daftar. Dalam setiap kasus, kami membagi nilai kembaliannya dengan 2.@Sum
seluruh daftar dan tampilkan hasilnya.sumber
JavaScript (ES6), 34 byte
Cobalah online!
Berkomentar
sumber
Merah ,
8155 byteCobalah online!
Mengambil input sebagai daftar string.
sumber
JavaScript,
3332 byteCobalah secara Online!
Disimpan 1 byte berkat Arnauld.
sumber
Befunge-98 (FBBI) , 16 byte
Cobalah online!
sumber
Stax , 5 byte
Jalankan dan debug itu
sumber
Zsh , 36 byte
Dengan flag default zsh:
Cobalah online!
${(f)1}
membelah$1
baris baru, dan membuang baris kosong. The$[ arithmetic expansion ]
penjaga terhadap kasus kosong, ketika loop tidak pernah terbenam$c
.Zsh , 28 byte
Dengan
-o extendedglob
:Cobalah online!
(f)
Berpisah di baris baru,${ #?(#c52)}
menghapus 52 karakter terkemuka,(F)
bergabung di baris baru sehingga penghitungan karakter, bukan daftar karakter,${# }
hitung karakter.sumber
asm2bf , 135 byte
Versi golf:
Versi yang dikomentari:
sumber