Tugas:
Keluarkan nilai untuk x
, di mana a mod x = b
untuk dua nilai yang diberikan a,b
.
Anggapan
a
danb
akan selalu menjadi bilangan bulat positif- Tidak akan selalu ada solusi untuk itu
x
- Jika ada beberapa solusi, hasilkan setidaknya satu di antaranya.
- Jika tidak ada solusi, tidak ada output atau indikasi yang tidak ada solusi.
- Built-in diizinkan (tidak menyenangkan seperti pendekatan matematika lainnya)
- Output selalu bilangan bulat
Contohnya
A, B >> POSSIBLE OUTPUTS
5, 2 >> 3
9, 4 >> 5
8, 2 >> 3, 6
6, 6 >> 7, (ANY NUMBER > 6)
8, 7 >> NO SOLUTION
2, 4 >> NO SOLUTION
8, 5 >> NO SOLUTION
10,1 >> 3, 9
Ini adalah kode-golf , sehingga byte terendah menang.
code-golf
math
number-theory
code-golf
number
integer
code-golf
string
code-golf
music
code-golf
arithmetic
array-manipulation
decision-problem
code-golf
math
rational-numbers
code-golf
code-golf
graphical-output
hardware
code-golf
math
number
code-golf
string
parsing
natural-language
code-golf
tips
brain-flak
code-golf
graph-theory
code-golf
number
polynomials
king-of-the-hill
code-golf
ascii-art
kolmogorov-complexity
animation
king-of-the-hill
code-golf
tips
code-golf
ascii-art
code-golf
string
array-manipulation
data-structures
code-golf
math
number
code-golf
string
base-conversion
binary
code-golf
decision-problem
graph-theory
code-golf
math
polynomials
code-golf
kolmogorov-complexity
physics
code-golf
sequence
number-theory
code-golf
math
integer-partitions
code-golf
array-manipulation
random
permutations
code-golf
string
decision-problem
Graviton
sumber
sumber
Jawaban:
JavaScript ,
2827262423 byteCobalah online!
false
menunjukkan tidak ada solusi.-1 terima kasih @Arnauld
sumber
f=...
, lalu panggilf(8)(3)
? Itu sepertinya sedikit curang? Cara normal untuk memanggil suatu fungsi adalahf(8,3)
, mana yang akan membuat definisi fungsi Anda lebih lama?(8)(3)
, tetapi ada konsensus tentang PPCG yang diizinkan . Anda tidak harus memberinya nama.MATL , 6 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Pertimbangkan input
8
,2
sebagai contoh.sumber
Python 2 ,
4034 byte-6 byte terima kasih kepada Bubbler
Cobalah online!
sumber
lambda a,b:[(a==b)*-~a,a-b][a>b*2]
Jelly , 5 byte
Mengembalikan minimal x atau 0 yang valid jika tidak ada.
Cobalah online!
sumber
Groovy, 48 byte (menggunakan bawaan):
Eval.me(...+"g")
- Membubuhkan "g" ke input, menjadikannya BigInteger.modInverse(...)
- Melakukan operasi modulo terbalik.Java 8, 70 byte
sumber
R ,
3328 byteCobalah online!
-4 byte berkat Jarko Dubbeldam.
-1 byte terima kasih kepada Giuseppe.
Kembali
NA
jika tidak ada solusi. TIO tidak memiliki pryr library yang diinstal, jadi kode pada tautan itu yang digunakanfunction(a,b)
.sumber
pryr::f(which(a%%1:(a+1)==b))
lebih pendek 4 byte.match(b,a%%1:(a+1))
, yang mengembalikanNA
nilai yang hilang.Jelly ,
1110 byteProgram lengkap mengambil dua bilangan bulat positif,
a
danb
, dan mencetak daftar solusi bilangan bulat di antaramin(a,b)+1
danmax(a,b)+1
inklusif.Cobalah online!
sumber
Mathematica 36 Bytes
Memasukkan:
Keluaran:
sumber
a_ ±b_
. Tapi ini lebih pendek untuk digunakanCases
daripadaSelect
fungsi yang tidak disebutkan namanya:Cases[Range[9#],x_/;#~Mod~x==#2]&
Haskell , 33 byte
Gangguan dengan
code.hs: out of memory (requested ??? bytes)
jika tidak ada solusi (batas waktu di TIO sebelum itu):Cobalah online!
Terima kasih di Ørjan Johansen karena menemukan kesalahan!
sumber
b
membagia
.C # (Mono C # compiler) ,
57 5626 bytePort of Rod's Python menjawab. Terima kasih kepada WW untuk -1 byte.
BESAR terima kasih kepada Kevin Cruijssen untuk -30 byte.
Cobalah online!
sumber
return
.i=>{/*code here*/}
). Namun dalam hal ini, karena Anda memiliki 2 input, ini bisa menjadi fungsi lambda yang sedang dikerjakan untuk menyimpan byte tambahan (a=>b=>{/*code here*/}
bukan(a,b)=>{/*code here*/}
). Anda juga dapat menghapus tanda kurung di sekitar tanda-if Anda. Secara total, tanpa mengubah fungsionalitas Anda, itu menjadia=>b=>a-b>b?a-b:a==b?a+1:0
26 bytePyth, 16 byte
Cobalah online!
Semua uji kasus
Mengambil input sebagai
[a, b]
, kesalahan jika tidak ada solusi yang ditemukan. Akan merevisi jika kesalahan tidak diizinkan.sumber
APL (Dyalog Unicode) , 19 byte
Cobalah online!
Golf sedang berlangsung ...
sumber
Mathematica, 28 byte
sumber
PHP> = 7.1, 51 Bytes
Versi Online
sumber
Aksioma,
147128 byteungolf itu dan uji
Ini akan menemukan semua solusi bahkan solusi set yang tak terbatas ...
sumber
Pip , 9 byte
Mengambil dua angka sebagai argumen baris perintah. Menghasilkan solusi terkecil, atau nol jika tidak ada solusi. Cobalah online!
Penjelasan
Misalnya, dengan input dari
8
dan2
:Indeks berbasis 0 dari kemunculan pertama
2
dalam daftar ini adalah3
, yang merupakan solusi kami.sumber
J , 14 byte
Cobalah online!
Terjemahan dari solusi Rod's Python 2 .
Bagaimana itu bekerja
Kasus yang jarang terjadi di mana kode J dapat langsung diterjemahkan ke dalam Python.
sumber
Japt , 13 byte
Cobalah online!
Terjemahan dari solusi JS eush77 .
Kode hanya
(U-=V)?U>V&&U:-~V
ketika ditransmisikan ke JS, di manaU
danV
merupakan dua nilai input.sumber
Ruby , 31 byte
Cobalah online!
sumber
Japt , 7 byte
(Akhirnya) Keluaran
undefined
jika tidak ada solusi.Coba di sini
sumber
Perl 6 , 23 byte
Cobalah online!
Blok kode anonim yang mengembalikan daftar nilai yang mungkin dari
2
hinggaa+1
sumber
ORK , 566 byte
Cobalah online!
O bjects R K ool. Untungnya, bagaimanapun, saya tidak perlu menggunakan (selain yang built-in) untuk tugas ini.
sumber
F #, 40 byte
Cobalah online!
Cukup mudah. Melempar
System.Collections.Generic.KeyNotFoundException
jika tidak ada solusi yang dapat ditemukan.Anda juga dapat memodifikasinya
Seq.tryFind
, yang akan mengembalikanint option
, denganNone
jika tidak ada solusi yang ditemukan.sumber
05AB1E , 7 byte
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Java 8, 26 byte
Port jawaban @Epicness 'C # , setelah saya mainkan sedikit lagi.
Cobalah online.
sumber
> <> , 21 byte
Trik yang sama dengan kebanyakan solusi yang diposting. Pertama, kami menyiapkan semua nilai yang diperlukan pada tumpukan dan kemudian memeriksa perbandingannya.
Cobalah online!
sumber
Bisikan v2 , 128 byte
Cobalah online!
Mengembalikan set semua solusi yang mungkin, dan set kosong (mis∅ ) ketika tidak ada solusi.
Bagaimana itu bekerja
Tidak mengherankan, ia bekerja hampir identik dengan sebagian besar jawaban lain: ia menghasilkan daftar angka dan memeriksa masing-masing untuk modulus terbalik dengan argumen.
Jika Anda terbiasa dengan bagaimana struktur program Whispers bekerja, jangan ragu untuk beralih ke garis horizontal. Jika tidak: pada dasarnya, Whispers bekerja pada sistem referensi baris demi baris, mulai dari baris terakhir. Setiap baris digolongkan sebagai salah satu dari dua opsi. Entah itu adalah garis nilad , atau itu adalah garis operator .
Garis Nilad dimulai dengan{ 0 } .
>
, seperti> Input
atau> {0}
dan mengembalikan nilai tepat yang diwakili pada garis itu yaitu> {0}
mengembalikan set> Input
mengembalikan baris STDIN berikutnya, dievaluasi jika mungkin.Jalur operator dimulai dengann → n2 ), jadi 12 , alih-alih mengembalikan kuadrat dari baris 1 , yang, dalam hal ini, adalah input pertama.
>>
, seperti>> 1²
atau>> (3]
dan menunjukkan menjalankan operator pada satu atau beberapa nilai. Di sini, angka-angka yang digunakan tidak mereferensikan angka-angka eksplisit itu, melainkan mereka merujuk nilai pada baris itu. Sebagai contoh,²
adalah perintah kuadrat (>> 1²
tidak mengembalikan nilaiBiasanya, garis operator hanya berfungsi menggunakan angka sebagai referensi, namun Anda mungkin telah memperhatikan garis
>> L=2
dan>> L⋅R
. Kedua nilai ini,L
danR
, digunakan bersama denganEach
pernyataan.Each
pernyataan bekerja dengan mengambil dua atau tiga argumen, lagi sebagai referensi numerik. Argumen pertama (misalnya5
) adalah referensi ke garis operator yang digunakan fungsi, dan sisanya dari argumen adalah array. Kami kemudian mengulangi fungsi di atas array, di manaL
danR
di fungsi mewakili elemen saat ini (s) dalam array yang diulangi. Sebagai contoh:MembiarkanA = [ 1 , 2 , 3 , 4 ] , B = [ 4 , 3 , 2 , 1 ] dan f( x , y) = x + y . Dengan asumsi kita menjalankan kode berikut:
Kami kemudian mendapatkan demonstrasi tentang bagaimanaC= [ ( 1 , 4 ) , ( 2 , 3 ) , ( 3 , 2 ) , ( 4 , 1 ) ] lalu petakan f( x , y) atas setiap pasangan, membentuk susunan terakhir kami D = [ f( 1 , 4 ) , f( 2 , 3 ) , f( 3 , 2 ) , f( 4 , 1 ) ] = [ 5 , 5 , 5 , 5 ]
Each
pernyataan bekerja. Pertama, ketika bekerja dengan dua array, kita ritsleting mereka untuk membentukCobalah online!
Cara kerja kode ini
Bekerja berlawanan secara intuitif dengan cara Whispers bekerja, kita mulai dari dua baris pertama:
Ini mengumpulkan dua input kami, katakanlahx dan y , dan menyimpannya masing-masing di jalur 1 dan 2 . Kami kemudian menyimpanx2 pada baris 3 dan buat rentangA : = [ 1 . . . x2] pada saluran 4 . Selanjutnya, kita lompat ke bagian
Hal pertama dilaksanakan di sini adalah garis 7 ,B : = [ i%x|i ∈ A ] dimana Sebuah%b didefinisikan sebagai modulus dariSebuah dan b .
>> Each 5 4
yang iterates baris 5 melewati garis 4 . Ini menghasilkan arrayKami kemudian mengeksekusi baris 8 ,B , menghasilkan sebuah array C: = [ ( i%x ) = y|i ∈ A ] .
>> Each 6 7
yang iterates baris 6 lebihUntuk inputx = 5 , y= 2 , kita punya A = [ 1 , 2 , 3 , . . . , 23 , 24 , 25 ] , B = [ 0 , 1 , 2 , 1 , 0 , 5 , 5 , . . . , 5 , 5 ] dan C= [ 0 , 0 , 1 , 0 , 0 , . . . , 0 , 0 ]
Kami kemudian melompat ke bawah
yang merupakan contoh kita dariSEBUAH dan C . Kami mengalikan setiap elemen dalamSEBUAH dengan elemen yang sesuai di C , yang menghasilkan array, E , di mana setiap elemen bekerja dari hubungan berikut:
Each
pernyataan diad . Di sini, fungsi kami adalah garis 9 yaitu>> L⋅R
dan dua array kami adalahKami kemudian berakhir dengan array yang terdiri dari0 dan moduli kebalikan dari x dan y . Untuk menghapus0 s, kami mengonversi array ini ke set ( { 0 } , menghasilkan, lalu mengeluarkan, hasil akhir kami.
>> {10}
), lalu mengambil perbedaan set antara set ini dansumber
C #, 53 byte (83 dengan judul fungsi)
Cobalah secara Online
Pertama coba di codegolf. Mungkin bukan bahasa terbaik untuk digunakan, atau pengkodean yang paling efisien.
sumber