Untuk menetralkan data, ganti semua angka (bukan angka!) Secara rekursif dengan nol dan semua karakter (bukan string!) Dengan spasi.
Anda harus menerima nomor tunggal, karakter, atau string, atau mungkin array * rekursif dari data numerik / karakter campuran yang dapat ditangani oleh bahasa Anda. Misalnya, Anda harus menerima string aktual (dan tidak membatasi input Anda ke daftar karakter tunggal) jika bahasa Anda dapat menangani hal itu.
Jika bahasa Anda berisi built-in yang melakukan semua atau sebagian besar tugas ini, saya akan menghargai versi alternatif tambahan tanpa itu.
Pengajuan terpendek dalam setiap bahasa adalah pemenang, dan akan menerima upvote dari saya.
Contoh kasus
""
→""
7
→0
123.456
→0
"X"
→" "
" "
→" "
"Yo!"
→" "
[]
→[]
[-1.2E3]
→[0]
["Hey"]
→[" "]
["H","e","y"]
→[" "," "," "]
["R",2,"D",2]
→[" ",0," ",0]
["C","3","P",0]
→[" "," "," ",0]
["THX",[1138]]
→[" ",[0]]
["T","H","X",[1138]]
→[" "," "," ",[0]]
[[["H"],"e",1,1,0],[[-3],"arth"]]
→[[[" "]," ",0,0,0],[[0]," "]]
* Jika bahasa Anda memiliki beberapa jenis yang dapat mewakili array dengan baik seperti contoh di atas, Anda dapat memilih untuk mendukung satu saja. Dua entri dapat keduanya menang, meskipun mereka menggunakan bahasa yang sama, masing-masing dengan tipe data yang berbeda.
Jawaban:
JavaScript (ES6),
5347 byteUji kasus
Tampilkan cuplikan kode
sumber
big()
! Meskipun demikian, Anda mungkin akan menggunakan pemeriksaan kedepan yang lebih baikraw()
.raw()
? Saya tidak berpikirString.prototype.raw()
didefinisikan. HanyaString.raw()
itu.Python 2 , 52 byte
Cobalah online!
Bagaimana itu bekerja
Python memungkinkan Anda membandingkan berbagai jenis. Tipe numerik selalu lebih kecil dari iterables, dan iterables diurutkan berdasarkan nama tipenya
Dengan cara ini, f melakukan yang berikut.
Jika x adalah numerik
x<{}
mengembalikan Benar dan1-(x<{})
mengembalikan 0 . Kode setelahand
itu tidak dieksekusi.Jika x iterable,
1-(x<{})
mengembalikan 1 (benar), jadi kode setelahand
dieksekusi.Jika x adalah daftar,
x<''
itu benar dan f dipetakan di atas item-itemnya.Jika x adalah string,
x<''
salah dan x diganti dengan string spasi dengan panjang yang sama.sumber
Ruby,
54 5349 byteMungkin ada cara yang lebih baik, tetapi:
sumber
a.map
untuk[*a].map
bekerja seperti yang diharapkanMathematica, 51 byte
Saat ini saya punya dua solusi pada hitungan byte ini:
Yang kedua melempar banyak peringatan yang bisa diabaikan.
Penjelasan
Dalam kedua kasus, kita mulai dengan mengubah angka menjadi nol
Kemudian untuk memproses string, ada dua opsi. Baik, kami menggunakan subtitusi lain yang hanya berlaku untuk string:
Atau, kami menggunakan
MapAll
operator//@
yang memetakan fungsi pada setiap elemen dalam daftar bersarang. Tangkapan di sini adalah bahwa kita akan mencoba untuk menggunakanStringReplace
pada nol serta simbolList
(karena//@
juga melewati kepala ekspresi), jadi kita perlu menggunakanCheck
(semacam seperticatch
pernyataan dalam bahasa lain) untuk menghindari menimbulkan kekacauan dengan nilai-nilai itu:sumber
Jelly , 4 byte
Ini adalah tautan monadik. Pencetakan tersirat Jelly melakukan banyak percikan; untuk memverifikasi bahwa output adalah apa yang seharusnya, Anda dapat melihat representasi internal
ŒṘ
. Perhatikan bahwa ini memperlihatkan string sebagai daftar karakter, yang adalah bagaimana penerjemah Jelly mengimplementasikannya.Cobalah online!
Bagaimana itu bekerja
sumber
[[["H"],"e",1,1,0],[[-3],"arth"]]
dalam APL ...JSON2APLexpr←⎕SE.Dyalog.Utils.repObj 7159⌶ ⋄ JSON2APLexpr'[[["H"],"e",1,1,0],[[-3],"arth"]]'
memberi((,⊂,'H') (,'e') 1 1 0) ((,¯3) 'arth')
. FYI,7159⌶
akan berada⎕JSON
di versi 16.0.Perl 6,
3448 byteDiperluas:
sumber
.deepmap
berfungsi dengan benar untuk input tunggal seperti"X"
atau7
, karena selalu mengembalikan Daftar.GAP , 91 byte
GAP memiliki metode
Zero
yang mengembalikan elemen aditif netral yang sesuai dengan elemen struktur aditif. Itu menangani angka dan bahkan daftar angka yang dianggap vektor, tetapi bukan daftar arbitrer. Jadi mari kita tambahkan ini dan Chars dan gunakan bahwa Strings adalah daftar Chars:(Saya tidak menghitung baris baru karena tidak diperlukan.) Tentu saja ini jauh dari penggunaan yang dimaksudkan
Zero
, dan GAP akan mengeluh jika saya tidak menggunakanInstall
LainMethod
. Sekarang saya bisa melakukan:Saya tidak akan mengatakan bahwa builtin melakukan sebagian besar pekerjaan, orang mungkin lebih curiga bahwa menulis fungsi normal harus lebih pendek, tetapi upaya terbaik saya adalah 92 byte:
sumber
Haskell, 115 byte
Bahasa saya tidak dapat menangani campuran angka dan string dalam daftar (tetapi tentu saja Anda dapat menentukan jenis penjumlahan dan memasukkannya ke dalam daftar), dan daftar standarnya tidak dapat menangani daftar bersarang yang berbeda. Jadi saya hanya melakukan apa yang bisa ditangani. Saya pikir itu tidak adil karena masih panjang, dan saya terutama melakukannya untuk menunjukkan fitur haskell yang jarang terlihat dalam solusi golf haskell. Perhatikan bahwa String adalah daftar Chars.
Ini menangani angka berapa pun sebagai Dobel:
sumber
data N=S[Char]|I Int|L[N]
dan fungsi rekursif.PHP, 91 byte
jika parameter array: menggunakan berulang
array_map
.lain jika parameter adalah string: menghasilkan string spasi dengan panjang yang sama.
lain
0
.is_string
menghemat satu byte lebihis_numeric
; meniadakanis_array()
menjadikan tanda kurung sudah usang. Secara keseluruhan 17 byte lebih pendek dariif()recursion-loop;else x?string:number
dengan panggilan dengan referensi.sumber
Python 2, 59 byte
menggunakan cara GB untuk menentukan jenis
sumber
Common Lisp, 87
Tidak disatukan
Contoh
sumber
Groovy, 53 byte
Ini adalah penutupan tanpa nama. Coba di sini!
Penjelasan :
Groovy memiliki metode ini
.collectNested
yang membantu untuk beralih melalui daftar seolah-olah itu diratakan.Untuk menangani kasus khusus di mana hanya bilangan bulat atau string dilewatkan tanpa daftar, cukup bungkus setiap input ke dalam daftar dan output elemen pertama.
sumber
Pyke, 8 byte (Versi lama)
Penjelasan:
Ini tidak lagi berfungsi sebagai pembaruan yang membuatnya sangat palsu dari jenis lain di mana ada kebenaran yang secara otomatis dikonversi ke jenis kesalahan dari kebenaran.
sumber
C #,
197195 BytesFungsi ini menangani
char
,,string
semua tipe angka bawaan dan array rekursif.Program lengkap, helper output tidak ungolfed:
The
using
pernyataan hanya diperlukan untuk penolong output, bukan untuk fungsi sebenarnya.Coba Online
sumber
APL (Dyalog) 13.2 dan sebelumnya, 1 byte
Sampai dan termasuk versi 13.2, monadik
∊
melakukan ini. Perilaku lama dapat diaktifkan dengan menetapkan⎕ML
( M igration L Evel) ke nol.Cobalah online!
Tanpa menggunakan perilaku lama, 4 byte:
Cobalah online!
⊂
melampirkan0⍴
buat daftar panjang-nol salinan dari seluruh input (hanya mempertahankan struktur dan jenis info)⊃
memaksa satu elemen dari itu (membuat array prototipikal)sumber
Javascript ES6, 81 karakter
Uji:
sumber
Java 7, 262 (268) byte
282 + 6 untuk ditambahkan
\"
dan'
untuk mencetak String dan karakter.Penjelasan:
Kode uji:
Coba di sini.
Keluaran:
sumber