Di sekolah dasar, anak-anak belajar tentang pecahan yang tepat, di mana pembilangnya kurang dari penyebutnya, dan dengan demikian nilai pecahannya kurang dari satu. Kemudian, mereka diajarkan tentang pecahan di mana nilai pecahan lebih besar dari satu, dan dua cara berbeda untuk mengekspresikan pecahan ini: pecahan campuran dan pecahan tidak tepat.
Diberikan fraksi campuran, tentukan apakah itu setara dengan fraksi yang tidak tepat di mana nilai integer dan pembilang digabungkan bersama. Misalnya, untuk input 1 3/4
, fraksi yang tidak tepat adalah 13/4
.
Uji Kasus
1 3/4 -> falsey
1 3/10 -> truthy
6 6/7 -> falsey
55 55/100 -> truthy
4 9/100 -> falsey
40 9/100 -> falsey
7 49/1000 -> falsey
9 1/2 -> falsey
999 999/1000 -> truthy
1 21/200 -> falsey
1 21/101 -> falsey
Untuk input, Anda dapat mengambil bagian integer dan bagian fraksi sebagai input terpisah, tetapi Anda tidak dapat mengambil fraksi sebagai input dalam dua bagian, dan Anda tidak dapat menganggapnya sebagai nilai desimal. Anda dapat menjatuhkan bagian integer (tidak menganggapnya sebagai input) jika Anda tidak perlu menggunakannya.
54/100
disederhanakan untuk27/50
55/100
juga dapat disederhanakan11/20
, sehingga pertanyaan yang sama @JoKing muncul muncul di sana./
dilakukannya: /Jawaban:
MATL , 7 byte
Input adalah sebuah string. Output
1
untuk kebenaran,0
untuk falsey.Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Perl 6 ,
1612 byteCobalah online!
Mengambil input sebagai string yang mewakili fraksi. Ternyata pengetikan dinamis Perl 6 dapat menangani string menjadi pecahan rasional, siapa tahu? Jadi string
"1/10"
ketika dipaksa ke suatu angka, kembali0.1
Blok kode anonim hanya memeriksa apakah fraksi plus satu sama dengan satu yang digabungkan dengan fraksi. Berkat jawaban Python xnor untuk menunjukkan kepada saya bahwa bagian integer tidak masalah.
Solusi lama,
2726 byteCobalah online!
Mengambil input sebagai pecahan campuran yang rasional, dan mengembalikan benar atau salah. Mengembalikan nilai false untuk test case keempat karena dapat disederhanakan.
Penjelasan:
.nude
mengembalikan daftar[numerator, denominator]
.sumber
.nude
dinamai untuk nu merator + de nominator, tetapi seseorang mungkin sangat senang bisa menyebutnya begitu.'1 3/10'
{S/\s//==.words.sum}
Retina 0.8.2 ,
1716 byteCobalah online! Hanya membutuhkan bagian pecahan, sehingga suite tes tertaut menghilangkan bilangan bulat dari kasus uji. Penjelasan: Rangkaian yang tidak tepat sama dengan angka campuran hanya jika penyebutnya berkekuatan 10 dan pembilang memiliki satu digit untuk setiap nol dalam penyebut. Grup penyeimbang .NET digunakan untuk memverifikasi bahwa ada cukup angka. Sunting: Disimpan 1 byte berkat @sundar.
sumber
1 11/10
. Tampaknya menjadi masalah dengan implementasi Anda, bukan metode^
, jadi itu tidak membantu./
membuatnya jelas apa yang Anda cocok, jadi saya tidak berpikir Anda perlu jangkar di sana (pergi dengan aturan pencocokan regex biasa, tidak ada keahlian Retina di sini). Sepertinya bekerja: Cobalah secara online! .Sekam , 8 byte
Cobalah online!
Penjelasan
sumber
Python 2 , 43 byte
Cobalah online!
sumber
R ,
7865 byteCobalah online!
-13 byte berkat Giuseppe dan JayCe!
sumber
sub
apa-apa di sini. Selain itu, Anda dapat menggunakant=
sebagai gantinyatext=
Stax , 5 byte
Jalankan dan debug itu
Penjelasan:
sumber
Python 3 , 26 byte
Cobalah online!
Misalnya, input
3/4
memberi3/4+1==13/4
. Alih-alih mengambil seluruh bagian dari fraksi, kami hanya mengaturnya1
untuk menguji kesetaraan fraksi campuran. Uji kasus dari Chas Brown.sumber
Brachylog , 15 byte
Cobalah online!
Mengambil bagian fraksional sendiri sebagai input string.
Secara tidak langsung menggunakan ide yang sama dengan jawaban Julia saya - "penyebutnya 10 ^ {panjang pembilang}" dapat dikatakan sebagai "penyebut adalah kekuatan sepuluh, dan panjang penyebut sama dengan panjang pembilang + panjang "/" (yaitu 1).
Jawaban yang lebih lama:
1520 byteCobalah online!
(-1 byte berkat @Fatalize, tapi sayangnya +6 byte karena saya menemukan bug dalam metode yang lebih lama.)
Ide yang sama dengan jawaban Julia saya .
sumber
A
dengan variabel output.
(dan dengan demikian menghapus yang terakhirA
karena variabel output secara implisit ada di akhir)61/10
(menggunakan hanya 6 sebagai pembilang / awalan)2/110
(menggunakan hanya 10 sebagai penyebut / sufiks). Saya sudah mencoba memperbaikinya, tidak yakin apakah ini adalah cara terbaik untuk melakukannya.Julia 0,6 , 29 byte
Cobalah online!
Berdasarkan gagasan bahwa output harus benar hanya ketika penyebutnya adalah kekuatan sepuluh dengan nol sebanyak jumlah digit dalam pembilang. Mengambil input sebagai
Rational
tipe, memeriksa bahwa penyebutnya sama dengan 10 yang dinaikkan ke jumlah digit dalam pembilang.sumber
Bersih , 57 byte
Cobalah online!
Yang ini sedikit lebih pendek tetapi istirahat untuk pembilang / penyebut besar.
Bersih ,
77616058 byte-1 berkat tip OM tip pada jawaban saya yang lain
Cobalah online!
Ini menggunakan metode Neil , ini sedikit lebih pendek daripada melakukannya secara langsung.
Ada beberapa tipu daya dengan konversi berlebih, di mana
1<+[48\\_<-:u]
dikonversi[Int]
ke[Char]
dan kemudian ke{#Char} (:== String)
, tetapiInt
langsung keString
.Bersih ,
9189 byteCobalah online!
Menentukan fungsi
$ :: String String -> Bool
yang mengekstrak pembilang dan penyebut, merangkai string bagian integer dan pembilang, dan memeriksa kesetaraan.sumber
05AB1E , 7 byte
Hanya mengambil pecahan sebagai input.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Atau penjelasan yang lebih umum:
Kami harus memvalidasi dua hal:
1, 10, 100, 1000
, dll.)?PS: Jika kita bisa mengambil pembilang dan penyebut sebagai masukan dipisahkan, hanya 3 byte akan cukup:
g°Q
.sumber
JavaScript, 26 byte
Mengambil input dalam sintaks currying (
f(x)(y)
) di manax
integer dany
merupakan fraksi sebagai string.Cobalah online
sumber
Java 10,
107706757 byteSelamat datang di dunia tanpa
eval
..-40 byte dengan membuat port jawaban Python 2 dari @ChasBrown .
-10 byte terima kasih kepada @Shaggy (saya seharusnya membaca jawaban @ChasBrown lebih baik dan penggunaannya dari
find
(indexOf
) ..)Cobalah online.
Penjelasan:
sumber
Haskell ,
4740 byte-7 Terima kasih kepada OMᗺ
Cobalah online!
Port jawaban Bersih saya menggunakan metode Neil.
sumber
Perl 5 -p, 23 byte
Cobalah online!
Mengambil bagian fraksional sendiri sebagai input (sebagaimana diizinkan oleh OP), menghasilkan 1 untuk true dan tidak ada untuk false.
Bagian desimal yang diambil dengan sendirinya akan persis sama dengan pembilang hanya ketika penyebutnya adalah kekuatan selanjutnya langsung sepuluh lebih besar dari pembilang, yang merupakan kondisi yang perlu kita periksa.
sumber
Noether, 17 byte
Cobalah online!
Penjelasan
Jadi bagaimana cara kerjanya? Nah, jika Anda melihat kasus uji, satu-satunya kasus yang benar adalah ketika penyebut adalah kekuatan sepuluh,10Sebuah dimana Sebuah adalah panjang pembilang ditambah satu (a = ⌊ log10n ⌋ + 1 dimana n adalah pembilang dan ⌊ x ⌋ mewakili fungsi lantai).
sumber
TeaScript , 25 byte
Input pertama adalah fraksi, kedua adalah integer.
Saya baru saja mulai di TeaScript sehingga mungkin banyak bermain golf
Cobalah online!
sumber
R , 53 byte
Cobalah online!
Hanya mengambil bagian fraksional sebagai input. Seperti yang disebutkan oleh xnor dalam komentar:
Jawaban Robert S. kurang golf, tetapi jauh lebih menarik daripada jawaban saya.
sumber
C (gcc) ,
675655 byteCobalah online!
sumber
r
? tio.run/…Excel, 52 byte
Abaikan input Integer. Pada dasarnya:
IS Denominator = 10^LEN(Numerator)
Untuk penyebut terbatas hingga
<10^9
: 48 byte:Sebagian besar logika terpecah
/
. Jika input dapat diambil secara terpisah, 16 byte:sumber
Elixir , 81 byte
Cobalah online!
Mungkin bisa pergi ke suatu tempat dengan
{n,"/"<>d}=Integer.parse b
, tetapi tidak yakin bagaimana caranya.sumber
2DFuck , 86 byte
Cobalah online!
Mengambil input tanpa bagian integer.
sumber
C (gcc / dentang),
594947 bytePort of Chas Brown menjawab Python 2 . Cobalah online di sini .
Mengabaikan bagian integer dari input. Terima kasih kepada Jonathan Frech untuk bermain golf 2 byte.
Tidak Disatukan:
sumber
'/'
kemungkinan besar bisa47
.ForceLang,
8678 bytesumber