Ada begitu banyak cara untuk mengekspresikan apakah sesuatu itu benar atau tidak! Tujuan dari tantangan ini adalah untuk menghasilkan keluaran terstandarisasitruthy
atau falsy
untuk berbagai nilai input kebenaran dan kepalsuan.
Untuk keperluan tantangan ini, masukan berikut dianggap benar:
- String yang mewakili integer yang ditandatangani dengan nilai bukan nol (hanya berisi digit
[0-9]
, dengan opsional-
di awal). Perhatikan bahwa string-0
tidak akan pernah diberikan sebagai input. Integer non-nol tidak akan pernah didahului oleh0
(yaitu01
tidak akan pernah diberikan sebagai input, demikian pula-01
tidak akan pernah menjadi gien sebagai input). - Kasus-sensitif string setara dengan salah satu
defined
,found
,nonnil
,non-nil
,on
,success
,t
,true
,y
, danyes
Untuk keperluan tantangan ini, input berikut ini dianggap palsu:
- String
0
. Nol berulang (00
,00...
) tidak akan pernah diberikan sebagai input. - String kosong
- Kasus-sensitif string setara dengan salah satu
f
,failure
,false
,n
,nan
,nil
,no
,notfound
,not-found
,null
,nullptr
,off
, danundefined
Memasukkan
Input adalah string yang mewakili nilai kebenaran / kepalsuan. String dapat berasal dari sumber yang diinginkan (stdio, parameter fungsi, dll.). Tidak ada spasi putih terkemuka / tertinggal.
Input dijamin sesuai dengan salah satu nilai kebenaran / kepalsuan yang diizinkan di atas (yaitu Anda tidak perlu memberikan penanganan kesalahan)
Keluaran
Program / fungsi Anda harus menampilkan nilai kebenaran / kepalsuan yang mewakili "kebenaran" atau "kepalsuan" dari input. Anda hanya diperbolehkan menentukan secara tepat 1 nilai kebenaran dan 1 kepalsuan yang harus dikonversi oleh output Anda (ini adalah nilai kebenaran / kepalsuan "standar" Anda). Output dapat ditulis ke setiap wastafel yang diinginkan (stdio, nilai balik, parameter output, dll.).
Silakan tentukan apa truthy
dan falsy
nilai yang Anda pilih dalam jawaban Anda.
Mis .: Jika Anda memilih string true
sebagai nilai kebenaran, Anda juga tidak bisa memiliki bilangan bulat 1
untuk kebenaran.
Uji Kasus
Kasus uji diformat karena baris pertama adalah input, dan baris kedua adalah output.
-1
true
1
true
1234
true
-4321
true
defined
true
deFined
true
Found
true
nonnil
true
non-nil
true
ON
true
SuCCess
true
T
true
true
true
y
true
YeS
true
0
false
'' (empty string)
false
faLSE
false
f
false
Failure
false
n
false
NaN
false
nil
false
no
false
notfound
false
not-Found
false
NULL
false
nullptr
false
OFF
false
unDefined
false
Mencetak gol
Ini adalah kode-golf; kode terpendek dalam byte menang. Celah standar berlaku. Anda dapat menggunakan built-in yang diinginkan.
sumber
0
?00
, atau apakah itu input yang valid? (Saya kira mereka tidak valid, tetapi hanya memeriksa)Jawaban:
MATL , 20 byte
Input adalah string yang dilampirkan dalam tanda kutip tunggal. Keluaran adalah
1
untuk kebenaran atau0
untuk kepalsuan.Cobalah online! Atau verifikasi semua kasus uji .
Bagaimana itu bekerja
Ini melakukan dua tes pada input:
0
. Jadi cukup untuk mencoba konversi, ambil nilai absolut, dan jumlah. Ini memberikan nilai positif jika input berisi angka bukan nol, dan0
sebaliknya.'01...9ab...z'
. Fungsi konversi basis tidak peka huruf besar-kecil dan mengabaikan angka yang tidak ada dalam alfabet (dalam kasus kami,'-'
). Ternyata bahwa modulo 13 dari jumlah yang dihasilkan1
,3
,6
atau8
untuk string truthy, dan tidak memberikan nilai-nilai untuk string falsy. Jadi bisa digunakan sebagai tanda tangan. Kami dengan demikian melakukan modulo 13 dan melihat apakah hasilnya adalah salah satu dari keempat nilai tersebut. Ini memberi1
apakah itu, atau0
sebaliknya.Hasil akhir harus benar jika salah satu dari kedua kondisi terpenuhi, dan sebaliknya palsu. Jadi kami menambahkan dua angka yang dihasilkan dari 1 dan 2 di atas dan mengubahnya menjadi logis, yang memberikan
1
atau0
sebagai nilai kebenaran / kepalsuan terstandarisasi.sumber
Retina ,
222423 byteDisimpan 1 byte berkat edc65
Seluruh kode hanyalah sebuah regex. Pada
i`
awalnya membuat case regex tidak sensitif.Keluaran
1
untuk kebenaran,0
untuk falsey.Cobalah online!
sumber
n?on
bagus, saya akan menggunakannya. Saya pikir Anda tidak perlu `` `pertaman?on
.Batch, 142 byte
Output 1 untuk falsy, tidak ada untuk truthy.
sumber
JavaScript (ES6), 35
39Edit menggunakan
n?on
trik, dicuri dari jawaban BusinessCatSunting 2 OP yang diklarifikasi, tanpa 0s terkemuka, menyimpan 4 byte
Cukup mengembalikan
true
ataufalse
Uji
sumber
\d
dari regexp dan mengubah|v!=0
berfungsi?\d
for1-9
? Asalkan pertanyaan feersum akurat,^([-1-9dsty]|on|fo|non)
harus cukup.Python, 111 byte
Tes pada jumlah nilai ASCII, pemeriksaan tambahan
no
karenaon
memiliki nilai yang sama.sumber
ord('0')
tidaklambda s:s.lower()!='no'and sum(map(ord,s.lower()))in[0,48,323,744,523,877,110,785,443,922,315,317,946]>1
Saya belum mengujinya.Python,
1297978 byteHarus mengirimkan dengan cepat!
Benar itu salah dan salah adalah benar; Saya punya sajak yang bagus untuk ini, saya sungguh (tidak)
sumber
' 0 f failure false n nan nil no notfound not-found null nullptr off undefined'.split(' ')
.split()
, karena pemisah default untuksplit
adalah spasi.Python,
8375 byteMengembalikan 0 pada kesuksesan, AttributeError pada kegagalan.
Sekarang menggunakan regex edc85 untuk menghemat 8 byte.
sumber
PowerShell v2 +,
3937 byteMenganggap bahwa jawaban untuk pertanyaan @ feersum adalah "Tidak, bilangan bulat yang sebenarnya tidak boleh dimulai dengan a
0
."Port dari JavaScript jawaban regex @ edc65 , dengan
1-9
substitusi sendiri alih-alih\d
. Gunakann?on
trik @ BusinessCat untuk bermain golf lebih lanjut.Keluaran Boolean literal
$true
atau$false
nilai - nilai, yang bila dibiarkan melalui pipa dan dikirim melalui implisitWrite-Output
pada akhir hasil eksekusiTrue
atauFalse
dicetak ke konsol.Jika jawabannya "Ya, bilangan bulat yang benar dapat dimulai dengan
0
," maka perubahan berikut harus dilakukan untuk5149 byteJika Anda tidak suka regex, pilih PowerShell v3 + dan yang berikut ini di 107 byte
Ini mengambil string nilai falsey,
-split
menempatkannya di whitespace, dan menggunakan-notin
operator untuk memeriksa input$n
terhadap array string (yang, secara default, case-insensitive). Memerlukan$n-and
untuk memeriksa string kosong.sumber
'^[-1-9dsty]|fo|n?on'
:)notfound
dannot-found
karenafo
.^[-1-9dsty]|^fo|^n?on
tetapi jumlah karakter yang sama dan kurang jelas.PHP, 50 byte
cetakan
1
untuk kebenaran, tidak ada untuk kepalsuanmencoba untuk datang dengan solusi yang berbeda, tetapi regex terpendek untuk falsy adalah 3 byte lebih lama daripada itu untuk truey:
%^(0|fa|f?$|n(?!on)|of|u)%i
sumber
Python, 83 byte
https://repl.it/ClgO/1
sumber
in
termasuk non-kosong?x[:1]
untuk string kosong? Apakahin
return false dalam kasus itu? Jika demikian, Anda harus dapat melepaskanand''<x
''[:1] in 'abc'
mengevaluasi kebenarannya.