Tantangan ini, walaupun mungkin sepele di sebagian besar bahasa "standar", ditujukan kepada bahasa-bahasa yang begitu esoteris, tingkat rendah, dan / atau sulit digunakan yang sangat jarang terlihat di situs ini. Ini seharusnya memberikan masalah yang menarik untuk dipecahkan, jadi ini adalah kesempatan Anda untuk mencoba bahasa aneh yang telah Anda baca!
Tugas
Ambil dua bilangan asli a
dan b
sebagai input, dan hasilkan dua angka lainnya: hasil dari divisi integer a/b
, dan sisanya dari pembagian tersebut ( a%b
).
Ini adalah kode-golf : jawaban terpendek (dalam byte), untuk setiap bahasa, menang!
Input output
- 0 <=
a
<= 255, 1 <= b
<= 255. Setiap input Anda (dan juga keluaran) akan muat dalam satu byte.
- Anda dapat memilih format apa pun yang Anda suka untuk input dan output, selama kedua angka tersebut dapat dibedakan dengan jelas (mis. Tidak mencetak dua hasil bersamaan tanpa pembatas)
Contohnya
a,b->division,remainder
5,7->0,5
5,1->5,0
18,4->4,2
255,25->10,5
Catatan: Builtin yang mengembalikan hasil divisi dan sisanya dilarang . Setidaknya tunjukkan kepada kami bagaimana bahasa Anda menangani penerapan dua fungsi pada argumen yang sama.
Catatan 2: Seperti biasa, penjelasan tentang cara kerja kode Anda sangat disambut baik, meskipun terlihat mudah bagi Anda, itu mungkin tidak cocok untuk orang lain!
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan ikhtisar pemenang berdasarkan bahasa.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
# Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=114003,OVERRIDE_USER=62393;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={};e.forEach(function(e){var o=e.language;/<a/.test(o)&&(o=jQuery(o).text().toLowerCase()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link,uniq:o}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.uniq>s.uniq?1:e.uniq<s.uniq?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=617d0685f6f3"> <div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody> </table>
a b
penyediaanb a
?You may choose any format you like for both input and output, as long as the two numbers are clearly distinguishable
1
.Jawaban:
BitCycle ,
1467964 byteBaru menyadari bahwa seluruh bagian dari kode asli saya tidak diperlukan. Pengurangan besar!
Program mengambil input di unary dari baris perintah, dengan pembagi pertama. Ini hasil bagi bagi dan sisanya di unary, dipisahkan oleh a
0
. Sebagai contoh, di sinia=11
,b=4
,a/b=2
,a%b=3
:Tidak diserang, beraksi
Ini komputasi versi ungolfed saya
a=3
,b=5
dengan animasi dihidupkan (maaf tentang glitchiness):Mencoba penjelasan
Penjelasan ini berlaku untuk versi yang tidak diklik. Sebelum Anda mengatasinya, saya sangat menyarankan Anda membaca halaman Esolangs untuk merasakan bagaimana bahasa bekerja.
Algoritmanya seperti ini:
0
diikuti oleh bit dividen apa yang ada, kemudian terminasi.Inti dari kode adalah hubungan di antara para kolektor (huruf besar). Karena ada beberapa kolektor terpisah dengan setiap huruf, mari kita merujuk kepada mereka sebagai
A1
,A2
,B1
,B2
, dll, penomoran dari atas ke bawah.A1
danA2
pegang pembagi dan dividen, masing-masing, pada awal loop utama.B1
.C1
dan satu lagiC3
. Sisa dari dividen masuk ke dalamB2
.C2
.C3
atauC2
untuk output. Sisa dividen masuk keC4
.B
kolektor, mereka memutar kontennya kembali keA
kolektor dan melanjutkan di loop dalam.A
danB
pengumpul semuanya kosong,C
pengumpul terbuka dan kami melanjutkan ke tahap pemrosesan:C1
danC4
membuang isinya (masing-masing pembagi dan sisa dividen) ke dalamD1
danD3
.C2
kosong, kami masih mencetak hasil bagi.C3
naik ke=
saklar kanan atas .1
Bit pertama melewati langsung ke!
dan adalah keluaran.1
bit melewati, itu mengaktifkan saklar untuk menunjuk ke kanan, yang mengirim semua bit berikutnya dari papan.C2
tidak kosong, kami sedang mencetak sisanya.C2
dinegasikan ke0
dan melewati saklar. The0
melanjutkan dengan!
dan output.0
bit melewati, itu mengaktifkan sakelar untuk menunjuk ke kiri. Sekarang semua bit dariC3
pergi ke kiri dari sakelar dan diarahkan ke sekeliling!
, mengeluarkan seluruh sisanya.C2
juga dikirimkan keD2
.D
kolektor terbuka.D2
, itu berarti kami baru saja mencetak sisanya. Bit dariD2
hits@
, yang mengakhiri program.D1
danD3
loop kembali ke masingA1
-A2
masing, dan loop utama dimulai lagi.sumber
brainfuck ,
4341 byteIni menggunakan versi modifikasi dari algoritma modulus destruktif saya di Esolangs .
Program membaca dua byte - d dan n , dalam urutan itu - dari STDIN dan mencetak dua byte - n% d dan n / d , dalam urutan itu - ke STDOUT. Dibutuhkan juru bahasa brainfuck dengan pita ganda tak terbatas atau bundar, seperti yang ada di TIO.
Cobalah online!
Bagaimana itu bekerja
Sebelum program dimulai, semua sel memiliki nilai 0 . Setelah membaca d dari STDIN (
,
), bergerak satu langkah ke kiri (<
) dan membaca n dari STDIN (,
), rekaman itu terlihat sebagai berikut.Selanjutnya, dengan asumsi bahwa n> 0 , kita memasuki loop while
yang mengubah rekaman itu sebagai berikut.
Pertama,
>->+<
kemajuan ke sel C dan decrements itu, maka uang muka ke sel D dan bertahap, dan akhirnya kembali ke sel C . Apa yang terjadi selanjutnya tergantung pada apakah nilai sel C adalah nol atau tidak.Jika sel C memegang nilai positif,
[>]
(ke kanan sedangkan sel adalah non-nol) akan maju ke sel E .>>>>+<<<
uang muka kepada sel J untuk kenaikan itu, kemudian kembali ke sel F .Karena sel F akan selalu memegang 0 , sementara lingkaran
[<+>-]
dilewati seluruhnya, dan<<
kembali ke sel D .Akhirnya, karena baik D atau C terus 0 ,
[<]
(ke kiri sementara sel adalah non-nol) akan retrocede ke sel A .Jika sel C menampung 0 , loop
[>]
dilewati seluruhnya;>>>>+<<<
uang muka kepada sel G untuk kenaikan itu, kemudian kembali ke sel D .Pada titik ini, D akan menahan d (pada kenyataannya, jumlah nilai dalam C dan D akan selalu menjadi d ), jadi
[<+>-]
(sementara D positif, kenaikan C dan penurunan D ) akan mengatur C ke d dan D ke 0 .Akhirnya,
<<
retrocedes ke sel B ,[<]
(ke kiri sementara sel adalah non-nol) lanjut kiri ke sel A .Dalam kedua kasus,
>-
maju ke sel B dan menurunkannya, dan loop dimulai lagi kecuali ini nol.Setelah k iterasi, rekaman itu terlihat sebagai berikut.
Setelah n iterasi B adalah memusatkan perhatian keluar dan kami keluar dari loop. Nilai yang diinginkan ( n% d dan n / d ) akan disimpan dalam sel D dan G , jadi
>>.>>>.
cetaklah.sumber
Funciton ,
224108 byteHitungan byte mengasumsikan pengodean UTF-16 dengan BOM.
Cobalah online!
Di atas mendefinisikan fungsi
f
, yang mengambil dua bilangan bulat dan mengembalikan divisi dan produk mereka (fungsi di Funciton dapat memiliki beberapa output selama jumlah input dan output tidak melebihi 4).Menggunakan dua nilai input untuk beberapa tujuan sebenarnya cukup sepele: Anda cukup memisahkan konektor dengan pertigaan pada nilai yang akan diduplikasi di sepanjang kedua cabang, yang kemudian dapat kita berikan secara terpisah ke built-in untuk divisi dan modulo.
Sebenarnya butuh waktu dua kali lebih lama bagi saya untuk mengetahui cara menampilkan hasilnya kepada pengguna daripada hanya mengimplementasikan solusi.
Juga, Funciton memiliki divmod built-in,,
÷%
dan lucu built-in÷
dan%
bahwa penggunaan solusi saya diimplementasikan dalam hal÷%
. Namun, fungsi saya dif
atas tidak cukup identik dengan÷%
: Saya harus menukar urutan input dan meskipun sepertinya harus mudah untuk mengubahnya, sejauh ini saya belum dapat melakukannya tanpa menambah jumlah byte .sumber
JavaScript (ES6), 17 byte
Terima kasih kepada @Arnauld untuk bermain golf satu byte
Menerima input dalam format (x) (y)
Mendapat lantai x / y dengan melakukan bitwise atau
Mendapat sisa x% y
Menempatkan kedua nilai dalam array sehingga keduanya dapat dikembalikan
Cobalah online!
sumber
APL (Dyalog) , 5 byte
-2 byte terima kasih kepada @ngn
Ini adalah puncak (2-kereta) dari garpu (3-kereta), di mana tine kanan atas adalah fungsi turunan (hasil dari operator yang diterapkan pada suatu fungsi):
⌊
lantai÷
divisi,
dikurungkan ke|
sisa divisi⍨
dengan argumen swapped (modulus APL adalah "mundur")Cobalah online!
sumber
⌊÷,|⍨
Brachylog , 6 byte
Cobalah online!
Penjelasan
Kami menyalahgunakan metapredicate
ᶠ findall
untuk menerapkan dua predikat berbeda ke daftar Input dari dua argumen:sumber
MATL ,
1210 byteInput
a
, kemudianb
. Output adalah sisa, lalu hasil bagi.Cobalah online!
Penjelasan
Ini menghindari modulo dan divisi. Alih-alih itu menggunakan pembentukan ulang array :
a+1
elemen bukan - nol.b
baris. Ini secara otomatis bantalan dengan nol jika diperlukan.1
, masing-masing adalah sisanya dan hasil bagi.Pertimbangkan misalnya
a=7
,b=3
.sumber
Mathematica,
2018 bytePenyalahgunaan kecil dari aturan output yang fleksibel: hasilnya diberikan sebagai
div[mod]
, yang akan tetap tidak dievaluasi. Angka-angka individual dapat diekstraksi denganresult[[0]]
danresult[[1]]
.Dan hei, itu hanya satu byte lebih lama dari built-in yang bernama ridiculously
QuotientRemainder
.Mathematica, sebenarnya memiliki cara yang rapi untuk menerapkan beberapa fungsi ke input yang sama, tetapi lebih panjang tiga byte:
sumber
quotRem
builtin yang direkayasa dengan benar dapat menghemat waktu yang signifikan dibandingkan meneleponquot
danrem
secara terpisah.05AB1E , 5 byte
Cobalah online!
05AB1E memiliki bug, jadi input implisit tidak berfungsi :(Emigna mencatat bahwa input sering kali didorong mundur.sumber
You may choose any format you like for both input and output, as long as the two numbers are clearly distinguishable
berarti bahwa Anda dapat memutuskan bahwa input diambil sebagaidivisor, dividend
. Anda bisa menentukan "Input diambil sebagaidivisor, dividend
" dalam jawaban dan mereka akan dapat dibedakan dengan jelas :)Ubur-ubur , 14 byte
Cobalah online!
Penjelasan
Ubur-ubur adalah bahasa yang indah ketika menerapkan beberapa fungsi ke input yang sama. Bahasanya adalah 2D dan semua fungsi biner mencari ke selatan untuk satu input dan ke timur untuk yang lain. Jadi dengan mendekati satu nilai dari barat dan dari utara, kita dapat memberinya dua fungsi tanpa harus menduplikatnya dalam kode.
Dua
i
dalam program diganti dengan dua nilai input saat program dimulai. Sekarang%
adalah pembagian. Dibutuhkan satu input langsung dari timur, dan ketika pergi ke selatan itu menyentuhE
pengalihan yang mencari timur juga. Jadi kedua input diumpankan%
sebagai argumen.|
adalah built-in untuk modulo, yang pada dasarnya melakukan hal yang sama, tetapi akhirnya melihat ke selatan untuk keduanya dalam put.Kami menggabungkan kedua hasil menjadi pasangan dengan
,
. Kemudianm
adalah fungsi lantai (yang kita butuhkan karena%
divisi floating-point) dan akhirnya kita mencetak hasilnyap
.sumber
Cubix , 12
13byteYang memetakan ke kubus berikut
Coba di sini
Penjelasan dengan langkah-langkah seperti yang dijalankan
,I|I,
- dimulai dengan pembagian bilangan bulat superflous, dapatkan bilangan bulat pertama dari input, refleksikan kembali dan dapatkan bilangan bulat berikutnya dari input, lalu bagi lagiO;
- Keluarkan hasil pembagian integer dan letakan%
- lakukan mod. Ini bisa dilakukan nanti, tetapi berakhir di siniS\o
- Tambahkan karakter spasi ke stack, redirect dan output spaceW;
- Geser ke kiri dan pop ruang dari stackO|@
- Keluarkan mod yang sebelumnya dihitung, melewati reflektor horisontal dan berhenti.sumber
Brain-Flak ,
5654 byteCobalah online!
-2 byte terima kasih kepada Wheat Wizard
Penjelasan
Divisi integer dan modulo paling dikenal saat ini di Brain-Flak sangat mirip (pada kenyataannya divisi integer yang saat ini digunakan hanyalah modifikasi yang saya buat pada feersum modulo ).
Perbandingan divisi modulo dan integer:Dengan mudah, program pembagian integer hanya menggunakan tumpukan ketiga untuk menyimpan data sementara program modulo hanya menggunakan dua tumpukan normal untuk menyimpan data. Jadi hanya dengan menjalankan keduanya pada saat yang sama mereka tidak saling bertabrakan.
Kombinasi divisi modulo dan integer:Akhirnya, baik program integer division dan modulo yang digunakan dalam kombinasi ini dirancang untuk menjadi stack clean (tidak meninggalkan sampah di stack / tidak bergantung pada (tidak) adanya nilai pada stack selain input mereka) tetapi itu tidak perlu untuk masalah ini. Dengan demikian kita dapat menyimpan dua byte dengan tidak repot-repot melepaskan nol pada akhir loop utama dan dua byte lainnya dengan tidak mendorong nol pada awal, alih-alih mengandalkan bantalan nol di bagian bawah tumpukan.
Ini memberi kami program terakhir:Untuk penjelasan untuk program pembagian integer lihat jawaban feersum
Penjelasan Divisi Integer Segera Hadir ...
sumber
Java 8, 18 Bytes
(a,b)->a/b+","+a%b
Ini adalah ekspresi lambda dari tipe tersebut
BiFunction<Integer, Integer, String>
.Saya terkejut ... ini sebenarnya solusi yang cukup ringkas untuk Java. Pergi ekspresi lambda!
sumber
Brain-Flak ,
168 148110 byteSaya kira saya harus memeriksa Wiki terlebih dahulu
Format:
Cobalah online!
sumber
sed, 36 byte
35 byte kode, +1 untuk
-r
bendera.Mengambil input di unary, dipisahkan oleh ruang, dengan angka lebih kecil terlebih dahulu. Keluaran sebagai unary, dengan hasil bagi pertama di
1
s dan sisanya kedua dix
s. (Jika ini tidak dapat diterima, beri tahu saya dan saya akan mengubahnya ke ruang-terpisah1
seperti input.)Penjelasan
sumber
Excel 2013,
31 3026 bytePenjelasan
Input ada di sel
A1
danB1
. Ini hanya mengembalikan nilai pengembalian fungsiFLOOR
danMOD
, yang untuk lantai divisi dan sisanya. Nilai-nilai ini dipisahkan oleh koma.sumber
FLOOR(A1/B1;1)
bukannyaQUOTIENT(A1;B1)
FLOOR(A1/B1;1)
Python 2 , 20 byte
Cobalah online!
Built-in, 6 byte
Cobalah online!
sumber
Jelly , 3 byte
Cobalah online!
sumber
MINYAK ,
134106103102 byteMengambil input dari stdin, dua angka dipisahkan oleh baris baru. Menghasilkan hasil dari divisi integer, lalu baris baru, dan sisanya.
Ini adalah salah satu program OIL paling rumit yang pernah saya tulis, karena OIL tidak memiliki builtin untuk pembagian, sisanya, penambahan, substraksi, dan sebagainya. Ini bekerja dengan cara primitif melakukan pembagian: decrementation bersarang berulang.
Saya menyajikan kode dalam format beranotasi, dengan komentar dalam gaya bahasa scripting. Sebelum dieksekusi, komentar harus dihapus.
sunting: Memangkas 3 byte lebih banyak dengan memindahkan "konstanta" ke lokasi satu digit (lebih sedikit byte ke referensi), dan kemudian secara implisit memasukkan 2 lokasi nol (Dengan menggunakan baris kosong sebagai gantinya. Salah satunya bisa saya lakukan sebelum).
sunting: Dan byte lain dengan membuat nol awal tersirat. Kami benar-benar hanya membutuhkan nol literal tunggal.
sumber
Retina , 14 byte
Mari kita menyalahgunakan format input / output!
Mengambil input sebagai
b\na
, secara unary, digunakan untuk digit unary, setiap karakter non-digit, non-baris baru. Keluarkan hasil bagi dalam desimal, segera diikuti oleh sisanya di unary, menggunakan karakter yang sama dengan input.Cobalah online!
(.*) ¶(\1)*
cocok dengan angka pertama, lalu baris baru (¶ adalah singkatan Retina untuk \ n), lalu angka pertama lagi sebanyak mungkin. Jumlah pertandingan dari grup kedua akan menjadi hasil dari divisi, dan bagian yang tidak cocok akan menjadi sisanya.Dengan
$#2
, kami mengganti semua yang cocok di baris sebelumnya dengan jumlah tangkapan dari kelompok kedua, dan dapatkan hasilnya.sumber
ArnoldC ,
286283 byteCobalah online!
Bagaimana itu bekerja
Format output
sumber
Labirin , 11 byte
Cobalah online!
Penjelasan
IP kemudian menemui jalan buntu, berbalik dan program berakhir karena upaya pembagian dengan nol ketika
%
dieksekusi lagi.sumber
C, 32 byte
Cobalah online!
sumber
> <> ,
27 2616 + 1 = 17 byteCatatan
-v
bendera, lihat TIO untuk contoh.Cobalah online!
Penjelasan
Perhatikan bahwa tumpukan dimulai sebagai
A, B
, di manaA
danB
mewakili input pertama dan kedua, karena-v
flag yang digunakan.sumber
į
menjadi 255.-v
bendera).C, 21 byte
Makro yang menggantikan f (a, b) dengan 2 syarat dipisahkan dengan koma. Meskipun Anda sebaiknya meneruskannya ke suatu fungsi atau tidak ada cara untuk memilih 2 terpisah.
Cobalah secara Online
sumber
Haskell , 21 byte
Cobalah online! Contoh penggunaan:
13#2
pengembalian(6,1)
. Ya, ini cukup membosankan, namun sedikit lebih menarik daripadadivMod
build-in yang berfungsi sama.Sementara kita berada di sana, ada juga
quot
,rem
danquotRem
yang berperilaku sama pada bilangan asli sepertidiv
,mod
dandivMod
. Namun, untuk input negatif hasilmod
memiliki tanda yang sama dengan pembagi, sedangkan hasilrem
memiliki tanda yang sama dengan dividen. Atau, seperti yang tercantum dalam dokumentasi Prelude ,quot
apakah pembagian bilangan bulat terpotong ke nol dandiv
pembagian bilangan terpotong ke arah tak terhingga negatif.Bagaimana kalau tidak
div
ataumod
built-in?Tanpa build-in,
36 3231 byteCobalah online! Contoh penggunaan:
13#2
mengembalikan(1,6)
, yaitumod
hasilnya adalah yang pertama dandiv
hasil yang kedua. Jikaa
lebih kecilb
, makaa mod b
adalaha
dana div b
itu0
, begitu(a,0)
dikembalikan. Sebaliknya menghitungmod
dan secara rekursifdiv
daria-b
danb
, tambahkan1
ke hasil pembagian dan pertahankan sisanya.Menambahkan 1 ke hasil divisi dicapai dengan menggunakan
<$>
, yang biasanya digunakanmap
untuk memetakan fungsi di atas daftar, tetapi bekerja pada tupel juga, namun fungsi tersebut diterapkan pada elemen tupel kedua saja.Sunting: Disimpan satu byte berkat xnor!
sumber
<$>
pada tuple untuk bertindak pada elemen kedua:a#b|a<b=(a,0)|m<-a-b=(+1)<$>m#b
.Prolog SWI, 109 byte
Keluaran:
Deskripsi:
Algoritma rekursif sederhana tanpa divisi built-in atau modulo. Ini hanya menghitung "berapa kali cocok angka Kedua dengan yang Pertama?" dan melaporkan hasilnya (disatukan ke D) dengan sisanya (R).
// edit: menghapus spasi yang tidak perlu
sumber
:-
di sekitar pada baris terakhir tetapi tidak pada yang lain. Apakah mereka diharuskan ada karena suatu alasan? Hal yang sama berlaku untukE + 1
sementaraF-S
menyarankan tidak ada ruang yang dibutuhkan.Gol> <> , 11 byte
Penerjemah online
sumber
MATL, 5 byte
Cobalah di MATL Online!
Penjelasan
sumber
Ouroboros , 15 byte
Mengambil angka dalam urutan terbalik (mis
10 42
.). Coba di sini.Penjelasan
sumber