Soru Kod-Golf: Modül Böl


Meydan okuma:

Zaten dil tarafından sağlanan modül bölme operatörü kullanmadan, bir kullanıcıdan iki tamsayı girdisi alacak ve daha sonra, ikinci sayı ile ilk sayı modülü bölünmüş sayısının sonucunu gösteren bir program yazınız. Tüm girdilerin pozitif olduğunu varsayalım.

Örnek:

    Input of first number:2
    Input of second number:2
    Result:0

Kim kazanır:

Code Golf'ün nasıl çalıştığını bilmiyorsanız, kazanan, bu programı en az sayıda karakterle yazan kişidir.


20


Menşei


Belki de modül kurallarını belirtmelisin. Bu şaşırtıcı bir düşünce ama bilimsel topluluktaki diğerlerine göre negatif sayılara göre değişiyor - en.wikipedia.org/wiki/Remainder - Anurag
Tamam, düzenledim: tüm girdilerin olumlu olduğunu varsayabilirsiniz.
DIV talimatı olarak IA32 assembler'da zor olan, bölüm ve geri kalanı verir, böylece teknik olarak kullanmamalısınız. - Skizz


Cevaplar:


CSS: 107 karakter :)

CSS (ungolfed):

li {
    counter-increment: a;
}

li:after {
    content: counter(a);
}

li:nth-child(3n) { /* replace 3 with 2nd input ("b" in "a % b") */
    counter-reset: a;
    counter-increment: none;
}

Ekli HTML: <ol> <li></li> <li></li> <li></li> <!-- etc. --> </ol>

Çıktı:

Çıktı http://img155.imageshack.us/img155/4643/modd.png

Bu IE çalışmıyor (sürpriz sürpriz!).


95



Aklımı üflemeyi düşün - Matt Mitchell
Bu harika. - Joe D
Vay. Kelimelerde kelimenin tam anlamıyla kaybolmuşum. - Callum Rogers
Oldukça zeki :) - Kevin Vaughan
Şimdi bu kutu modelinin dışında düşünüyor! - John Rasch


J, 10 karakter

([-]*<.@%)

Kullanımı:

   10 ([-]*<.@%) 3
1

J, 17 karakter (bir liste olarak giriş ile)

({.-{:*[:<.{.%{:)

Kullanımı:

  ({.-{:*[:<.{.%{:) 10 3
1

  ({.-{:*[:<.{.%{:) 225 13
4

Açıklama:

Bir totem direği alıp bir suratına dönüştürdüm ve işe yaradı.


25



Ahhh J .... Neden rahatsız oluyoruz? - Dominic Bou-Samra
golfkript ftw! - Claudiu
Çoğu yönden mutlu bir kalabalık yüzüne benziyor ve başka bir şekilde yüzlerin çoğunlukla üzgün bir kalabalık gibi görünüyor. - dreamlax
"Bir totem direğini alıp bir surata dönüştürdüm ve işe yaradı." Altın efendim, altın. - Sam Pearson
Kodunuzu düzgün bir şekilde açıklamak için +1 - Anax


Golfkript, 6 7  13 karakter:

2*~/*-

Kullanım (golfscript'e giriş yapmanın tek yolu):

echo 14 3 | ruby golfscript.rb modulo.gs
2

Açıklama:

2*~     #double the input string and eval (so now 14 3 14 3 are on the stack)
/       #int divide 14 / 3, gives quotient
*-      #multiply that result by 3, subtract from 14, gives remainder

25



Kesinlikle golfscript.rb içeriğini içermelidir? Yani, modulo dilini uygulayan bir .rb dosyası (modulo.rb) yazabilirim, böylece: 'm' sembolü stdin üzerinde verilen ilk iki parametrenin modulunu döndürür ve çıktılar stdout sonucunu verir. Bu nedenle, yeni dil kriterleri yerine getiriyor ve bunu tek bir karakterde yapıyor! - Skizz
@Skizz: evet ama diliniz sadece modulo problemini çözecektir. golfscript düzinelerce kod golfü meydan okumasını çözdü ve Turing-complete olduğuna inanıyorum, yani içinde herhangi bir program yazabilirsin. sadece yakutta uygulanması basit olduğu için uygulamayı dahil etmem gerektiği anlamına gelmez - bu, herhangi bir C programı için GCC'nin kaynağını eklemeniz gerektiği anlamına gelir. - Claudiu
GCC örneğiniz tamamen aynı değil. Daha iyi bir örnek, C programının bir parçası olarak, "stdio.h" içeriğini içermek olacaktır. Ve tabiki, dış kütüphanelere bağlantı ile nasıl başa çıkıyorsunuz? 'M' fonksiyonunun, dahil edilebildiği takdirde, nihai yürütülebilir dosyaya bağlı bir kütüphanede tanımlandığını varsayalım. Eğer öyleyse, IO rutinleri dahil edilmelidir (çünkü bir assembler versiyonunun içerdiği gibi). Neyse. Burada tamamen ciddiyim, hiç fark etmedim, en azından GS, 'program' ve 'kod' arasındaki çizgiyi bulanıklaştıran bir Ruby programıydı ... - Skizz
@Skizz: heh ya yarı-ciddi olduğunun farkındayım, ama bu ilginç bir felsefi soru. Eğer golfscript ruby ​​kodunu gerektiriyorsa, o zaman Python'da bir C yorumlayıcısı yazacağım ve C kodunuzun benim tercümanı = P içermesini gerektireceğim. Bence anahtar, bir dilin uygulanmasıyla tanımlanmadığı bir şeydir. golfscript.rb veya gcc derleyicisi), ancak onun spec. Ayrıca senin m işlev var ve denir % = P. - Claudiu
Bu J'nin üzerinde olmalı. - Callum Rogers


RePeNt, 5 karakter

2?/*-

Kullanarak çalıştırın:

RePeNt mod.rpn 17 3
RePeNt "2?/*-" 17 3

RePeNt, her operatörün / komutun / döngüün Ters Polonya İşaretine (RPN) girildiği yerde kendime yaptığım yığın tabanlı bir oyuncak dilidir. Tercümanı biraz aldığımda serbest bırakacağım.

Command      Explanation                                              Stack
-------      -----------                                              -----

n/a          The program takes 2 parameters ( 17 3 ) and pushes them  17 3
             onto the stack
2            Pushes a 2 onto the stack                                17 3 2
?            Pops a number (x) off the stack + copies the last x      17 3 17 3
             stack items onto the stack
/            Divides on stack                                         17 3 5
*            Multiplies on stack                                      17 15
-            Subtracts on stack                                       2

13



RePeNt zaten var olduğunu düşünüyorum ve GolfScript denir? operatörler aynı şekilde çalışır gibi görünüyor. Programlarımız arasındaki tek fark, argümanlarınızı başlangıçta değerlendirmenize gerek olmamasıdır (~ gs içinde) - Claudiu
Çok benzerler, bence (GolfScript'te hiçbir şey yazmamıştım, sadece özellikleri okudular) hem yığın tabanlı diller olduklarından - C # ve C ++ her ikisinin de sahip oldukları ve infix notasyonlarını kullandıklarını söyleyebilirsiniz. Dilim ve GolfScript, özellikle değişkenler, özel tipler ve kontrol akışları açısından önemli farklılıklara sahiptir (bunların hiçbiri burada kullanılmamıştır). Gerçekten J ve Golfscript'in bir karışımı. Çözümler, aşağıdakiler gibi önemli ölçüde farklı olabilir: stackoverflow.com/questions/232861/fibonacci-code-golf/... ve J galibi aynı sayfada. - Callum Rogers
* Golfscript kazananı demek istedim - Callum Rogers


Ruby (32):

p(a=gets.to_i)-a/(b=gets.to_i)*b

12



Bu herhangi bir sonuç vermez, başlangıçta "p" eklemeniz gerekir - zed_0xff
Neden düşüşler? Bu topluluk wiki'sidir - sadece eksik p'yi ekleyin, sayıma bir tane ekleyin ve doğrudur. - Jordan Running
yah insanlar, bu oy vermeyin, o bir kod altın soruya çözüm teklif ediyor ... burada yaşayan saygı. - JP Silvashy


Elbette kazanamayacağım, ama hiçbir şey yapmıyor:

<?php  
$a=readline("#1:");  
$b=readline("#2:");  
while($b<=$a)$a-=$b;  
echo "Result: $a";  

8



Daha az yaygın olarak kodlanmış bir dilde bir çözüm sağlamak için +1. - Russell
Kısa etiketlerle birkaç karakter çıkartabilir ve yeni satırları kaldırabilirsiniz. - waiwai933
Bu kaç karakter var? Ben saymak tembelim.
28 register_globals ile GET değişkenleri kullanırsanız: <? while ($ b <= $ a - = $ b); echo $ a; ` - Casey Chu
27 ekoyu atlarsanız: <?while($b<=$a-=$b)?><?=$a; - Martin Nycander


Biliyorum zaten iki Ruby cevabı var, ama neden olmasın; girişi bu şekilde almak, birkaç karakteri nakavt etmek için yeterince farklı bir yaklaşımdır.

Ruby 1.8.7+, 29 karakter

a,n=*$*.map(&:to_i);p a-a*n/n
$ ruby ​​a.rb 10 3
1

5