Girişe göre çarpım tablolarını yazdırma


11

Bu meydan okumada, çarpım tablolarını girdiye göre yazdırmanız gerekir, İşte bazı örnekler:

Input: 2 

Output: 
0 2  4 6 8  10  12  14  16  18  20

Input: 20

Output: 20 40 60 80 100 120 140 160 180 200

kurallar

  1. Bayt cinsinden en kısa kod kazanır.

  2. Bu zorluk bir kod golf, kod-golf genel kurallara uyar ( )

  3. Kodunuz sayı yazdıramıyorsa, harfleri kullanabilirsiniz, İşte bir örnek:

    Giriş: B

    Çıktı: BDFHJLNPRT

  4. 0'dan veya numaranızdan başlamayı seçebilirsiniz (20 gibi). Boşluk koyup koymamayı seçebilirsiniz. Zorluk ücretsizdir, sadece bir girdi alın ve çarpım tablolarını yazdırın.

  5. Çıktınız, verilen sayı için zaman tablosunun ilk 10 üyesini listelemelidir. 0 * n dışında bırakabilirsiniz.


9
İlk örneğinizde 0'dan 10'a, ikinciden 1'den 10'a kadar katlar vardır. Bunlardan birini seçebilir miyiz veya bunlardan biri yazım hatası mıdır? Ayrıca, çıktının boşlukla ayrılması gerekiyor mu yoksa başka liste biçimlerini kullanabilir miyiz? (Yalnızca boşluklar varsa, örnekte boşluk sayısı biraz rastgele.)
Martin Ender

0'dan veya numaranızdan başlamayı seçebilirsiniz (20 gibi). Boşluk koyup koymamayı seçebilirsiniz. Zorluk ücretsizdir, sadece bir girdi alın ve çarpım tablolarını yazdırın.
Rizze

4
PPCG'ye Hoşgeldiniz! Oldukça basit bir meydan okuma görmek güzel, çünkü bunlara yeterince sahip değiliz, ancak gelecekte biraz daha bilgi ekleyeceğim. Gibi: Test durumlarından sadece 10 sayı çıkarmamız gerekiyor gibi görünüyor, ancak bunu belirtmiyorum. Negatif girdiyi desteklememiz gerekiyor mu? Neden 2 ile 4 arasında iki boşluk var? İlk test senaryosunun çıkışında neden 0 var (10 yerine 11 çıkış numarası yapıyor). vb. Ayrıca, önerilen zorluklar
Kevin Cruijssen

Kural 3 uyarınca, çıktı ne için Colmalıdır? Nasıl Z?
Lynn

1
Çıktı tam olarak nedir, normal kurallar bir işlevin çıktısını STDOUT'a yazdırmak yerine liste olarak döndürmesine izin verme eğilimindedir.
Brad Gilbert b2gills

Yanıtlar:



10

C #, 105 96 67 56 bayt

Şimdi lambda'nın C # 'daki çalışmasını bildiğime göre, işte ilk cevabım için bir güncelleme:

n=>{for(int i=0;i++<10;)System.Console.Write(i*n+" ");};

11 bayt tasarruf sağlar.


İlk gönderi, lütfen yanlış yaptığım herhangi bir şey için beni affet. Ayrıca, gerçekten daha önce denemedim gibi bana golf ipuçları vermek için çekinmeyin!

void c(int n){for(int i=0;i++<10;){System.Console.Write(i*n+" ");}}

Ungolfed:

void c(int n)
{
    for (int i = 0; i++ < 10 ; )
    {
        System.Console.Write(i*n+" ");
    }
}

Teşekkür ederim Jonathan Allan, henüz yorum ekleyemiyorum. Ve teşekkürler Kevin Cruijssen. Parçacıklara izin verildiğini belirtmedikçe, her zaman tüm programı dahil etmem gerektiğini varsaydım. Sistemden ayrılabilir miyim? Bu durumda konsola yazdırmak için çağrı mı yapıyorsunuz, yoksa / import kullanılıyor mu?


1
PPCG'ye Hoşgeldiniz! Sınıfı kaldırabilirsiniz, golf kuralları sadece ana işlevi gerektirir :)
Jonathan Allan

1
@JonathanAllan Sadece bu değil, aynı kurallarla Maintamamen ayrı bir yöntem de yapabilirsiniz . Yani void f(int n){for(int i=0;i++<10;){System.Console.Write(i*n+" ");}}gerçekten PPCG'ye hoş geldiniz!
Kevin Cruijssen


9

Jöle , 3 bayt

⁵R×

En Test edin TryItOnline
Veya ilk 256 olguda, güzel de ayrıca, hizalanmış TryItOnline

Nasıl?

⁵R× - main link takes one argument, n
⁵   - literal 10
 R  - range [1,2,...,10]
  × - multiply by input (implicit vectorization)

Jelly'i öğrenmek isterdim ama komutların yarısı benim için işe yaramıyor, bu yüzden işe yaramaz olurdu: D
Beta Çürümesi

@BetaDecay Çoğu yazamıyorum ve herhangi bir metin düzenleyicide veya cmd satırımda benim için işlemiyorlar :( - Windows 7 makinemde Firefox'ta iyi
Jonathan Allan

Siz ve Emigma kazanıyorsunuz.
Rizze

@BetaDecay - DejaVu Sans Mono yazı tipini indirmenize ve yeniden yüklemenize yardımcı olabilir (şimdi notepad ++ ve TIO'daki hemen hemen her karakteri Firefox aracılığıyla görebiliyorum ve şimdi de her karakteri gösteriyor)
Jonathan Allan

Tam olarak ne düşündüğümü +1.
Outgolfer Erik

8

Clojure, 70 80 bayt

Bu CG benim ilk yazı, umarım giriş iyi:

70 bayt

(defn -main[& a](println(map #(* %(read-string(first a)))(range 10))))

80 bayt

(defn -main[& a](let[n(read-string(first a))](println(map #(* % n)(range 10)))))

Program bir sayıyı stdin argümanı olarak okuyacak ve sonucu gösterecektir:

Çıktı

lein run 10
(0 10 20 30 40 50 60 70 80 90)

5
Hoşgeldiniz! Bu harika bir ilk cevap!
mbomb007


6

Perl, 19 bayt

İçin +1 içerir -n

STDIN üzerindeki giriş ile çalıştırın:

perl -M5.1010 -n table.pl <<< 8

table.pl:

say$_*$`for/$/..10

Muhtemelen demek istedin -n? yoksa bir şey mi kaçırdım?
Dada

@Dada: doğru, başka bir sürümle sınırladı. Sabit
Ton Hospel

5

Haskell, 16 bayt

(<$>[1..10]).(*)

Kullanım örneği: (<$>[1..10]).(*) $ 4-> [4,8,12,16,20,24,28,32,36,40].

Ait Pointfree versiyonu: f n = map (n*) [1..10].


Ne yapar <$>?
Cyoce

@Cyoce: (veya bir listeyle kullanıldığında) <$>bir infix sürümüdür , yani listenin her öğesine 1 bağımsız değişkeni olarak verilen işlevi uygular . = = . fmapmapfunc <$> listfmap func listmap func list
nimi



4

PHP, 34 bayt

(34 bayt)

for(;$i++<10;)echo$i*$argv[1].' ';

(34 bayt)

for(;++$i%11;)echo$i*$argv[1].' ';

(34 bayt)

while($i++<10)echo$i*$argv[1].' ';

(35 bayt)

for(;$i++<10;)echo' '.$a+=$argv[1];

( 41 40 bayt)

<?=join(' ',range(0,10*$a=$argv[1],$a));

<?=join(' ',range($a=$argv[1],10*$a,$a));

(44 bayt)

foreach(range(1,10)as$i)echo$i*$argv[1].' ';

Kullanarak tek range()ile $step0 olarak onu başlarsanız kısa olabilir: <?=join(' ',range(0,10*$a=$argv[1],$a));.
manatwork

0'dan başlamasına izin veren kural, yaptığımda ayarlanmadı, ama haklısın; Bunu güncelliyorum.
Kripto

4

J, 8 bayt

(i.10)&*

Bu aralıktır 0için 9dahil ( i.10) bağlanmış ( &çarpma fonksiyonu) wit ( *). Bu sıfırdan başlar.

Test senaryoları

   k =: (i.10)&*
   k 2
0 2 4 6 8 10 12 14 16 18
   k 10
0 10 20 30 40 50 60 70 80 90
   k"0 i.10
0 0  0  0  0  0  0  0  0  0
0 1  2  3  4  5  6  7  8  9
0 2  4  6  8 10 12 14 16 18
0 3  6  9 12 15 18 21 24 27
0 4  8 12 16 20 24 28 32 36
0 5 10 15 20 25 30 35 40 45
0 6 12 18 24 30 36 42 48 54
0 7 14 21 28 35 42 49 56 63
0 8 16 24 32 40 48 56 64 72
0 9 18 27 36 45 54 63 72 81

3

Zsh, 19 karakter

echo {0..${1}0..$1}

Örnek çalışma:
(Bu, çalıştırmanın etkileşimli yoludur. İle eşdeğerdir zsh scriptfile.sh 20.)

~ % set -- 20          

~ % echo {0..${1}0..$1}
0 20 40 60 80 100 120 140 160 180 200

3

Python 3, 52 33 30 bayt

lambda n:list(range(0,11*n,n))

@Manatwork sayesinde 3 byte tasarruf edildi

Çıktıyı biçimlendirmek görsel olarak gerekli değildir


1
Kabuk lambda n:" ".join(map(str,range(0,n*11,n)))
cevabımdan borç al

@manatwork Python 3 kullanıyorum
TuxCrafting

1
Python 3 kullanıyorsunuz, ancak Python 2 kullanarak 6 bayt kaydedebilirsiniz:lambda n:range(0,11*n,n)
Jonathan Allan

3

Mata, 15 29 Bayt

args i
mata
A=1..10
B=`i'*A
B

Mata, Stata ticari istatistik paketindeki matris programlama dilidir. Kod bir matris oluşturur, girişle (bu durumda 2) çarpar ve yeni matrisi çıkarır

Çıktı

        1    2    3    4    5    6    7    8    9   10
    +---------------------------------------------------+
  1 |   2    4    6    8   10   12   14   16   18   20  |
    +---------------------------------------------------+

1
Nasıl girdi alıyor? Ayrıca yeniden kullanılabilir olması gerekir.
Jonathan Allan

1
Tamam, giriş makbuzunu açıklığa kavuşturmak için düzenlendi
f1rstguess


3

Stata, 46 bayt

args i
set obs `i'
gen x=_n
gen y=x*`i'
list y

Çıktı

İ = 15 için

    +-----+
    |   y |
    |-----|
 1. |  15 |
 2. |  30 |
 3. |  45 |
 4. |  60 |
 5. |  75 |
    |-----|
 6. |  90 |
 7. | 105 |
 8. | 120 |
 9. | 135 |
 10.| 150 |
    |-----|
 11.| 165 |
 12.| 180 |
 13.| 195 |
 14.| 210 |
 15.| 225 |

Burada kullanabileceğiniz birkaç ekstra stenografi vardır: obs için ob, gen için g ve liste için l. Ayrıca, iki değişken kullanmak yerine x'in _n * `i 'olması mümkün müdür? Daha önce STATA'da hiç argüman görmemiştim. Bana yeni bir şey gösterdiğin için teşekkürler!
bmarks

3

Çedar , 20 bayt

n->(|>11).map(n&(*))

Fonksiyonel için Yay \ o /

Bunun bir açıklamaya ihtiyacı olduğunu sanmıyorum ama bana eklemek isterseniz sormanız yeterli :)


Cheddar'ı öğrenmeliyim. Peki ne yapar n&(*)? Sanırım (*)haskell olduğumla aynı anlama geliyor, ama &bu bağlamda ne yapar ?
Cyoce

'S @Cyoce bağ
Downgoat

3

Java 7, 61 57 bayt

void c(int n){for(int i=0;i++<10;)System.out.print(i*n);}

Test edilmemiş ve test durumları:

Burada deneyin.

class M{
  static void c(int n){
    for(int i = 0; i++ < 10; ){
      System.out.print(i*n);
    }
  }

  public static void main(String[] a){
    c(2);
    System.out.println();
    c(20);
  }
}

Çıktı:

2468101214161820
20406080100120140160180200

Boşluklar isteğe bağlıdır, System.out.print (i * n); 4 bayt kurtaracak
CameronD17

@ CameronD17 Ah, bu cevabı ben bu cevabı verdikten sonra eklendi, ama bahsettiğiniz için teşekkürler. Kaldırdım.
Kevin Cruijssen

3

JavaScript (ES6), 33 31 bayt

f=(x,i=11)=>--i&&f(x,i)+" "+x*i

Bu özyinelemeli bir çözüm.



3

Scala, 24 bayt

(n:Int)=>0 to 10 map(n*)

Açıklama:

(n:Int)=> //define an anonymous function
  0 to 10 //create a range from 0 to 10
  map(n*) //multiply each element by the input

2

Brachylog , 12 bayt

,10y:[?]z:*a

Çevrimiçi deneyin!

Bunu uygulamam gerek I * [A, B, C] = [I*A, I*B, I*C]

açıklama

,10y            The range [0, 1, …, 10]
    :[?]z       The list [[0, Input], [1, Input], …, [10, Input]]
         :*a    The list [0*Input, 1*Input, …, 10*Input]

2

brainf *** , 84 bayt

,[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++<<<<<<<<<<-]>[.>]

Girişi tek bir bayt olarak bekler (BF yalnızca 255'e kadar olan numaralarda çalışabileceğinden) ve sonuçları tek bayt olarak döndürür. Bazı değerler ASCII'ye benzeyebilir, ancak bu şekilde ele alınmamalıdır; Döndürülen baytların ondalık gösterimine bakın.

Çevrimiçi deneyin!


>, [> +> ++> +++> ++++> +++++> ++++++> +++++++ ++ +++ yaparak 5 bayt kaydedebilirsiniz. ++++> +++++++++> ++++++++++ [<]> -]> [.>]
Jeff

@Jeff Ne yazık ki, sonları bayt taşar çünkü 0'a taşma sıfırlama, yüksek 25'den var herhangi bir giriş 0ler tarafından eşleştirilmez [<]sonsuz tüm süreç döngü yapar.
Steven H.

Doğru, ancak taşan baytlar zaten kodunuzla yanlış çıkışlara neden oluyor, değil mi?
Jeff

1
@Jeff Doğru çıktılar, sadece 255 modda çalışıyorlar.
Steven H.

2

JavaScript, 42 bayt

function f(a){for(i=0;i<11;i++)alert(i*a)}

JS'yi çok iyi bilmiyorum, artımı for'un test kısmına taşıyabilir misiniz?
Jonathan Allan

Ben düzenledim. Şimdi tamamdır.
Rizze

Şimdi uyarı () ile uyarır.
Rizze

Uyarı olmadan benim için uyarıyordu: burada - Onu geri alıyorum, sadece yeniden yüklemek için "denemek" değil "çalıştır" ı tıklamanız gerekiyor
Jonathan Allan

1
@JonathanAllan Ne?
Rizze

2

MATLAB, 12 bayt

@(x)x*[1:10]

O kadar da değil. xGirdi olarak alan ve vektörle çarpan anonim bir işlev [1:10]. Olarak görüntülenir ans = 2 4 6 ... Octave'da da çalışır.

Çevrimiçi deneyin .


2

PowerShell v2 +, 23 bayt

param($n)1..10|%{$_*$n}

Komut satırı bağımsız ile girişi alır aralığında döngü 1için 10bu sayı yerleştirilmesi, her döngü, *$nboru hattı üzerinde. Write-OutputProgram yürütme sonunda örtük yoluyla çıktı yeni satırla ayrılmış değerlerle sonuçlanır.

PS C:\Tools\Scripts\golfing> .\multiplication-table.ps1 2
2
4
6
8
10
12
14
16
18
20

PS C:\Tools\Scripts\golfing> .\multiplication-table.ps1 20
20
40
60
80
100
120
140
160
180
200

2

C89, 44 bayt

k;main(n){for(k=n*11;k-=n;)printf("%d ",k);}

Ungolfed:

k;
main(n)
{
    for (k=n*11 ; k-=n ;)
        printf("%d ", k);
}

Derleyin ve çalıştırın (giriş 4)

gcc -ansi main.c && ./a.out 2 3 4

Çıktı

40 36 32 28 24 20 16 12 8 4 

Dene

Demo


2

Pyke, 5 bayt

TSQm*

Burada deneyin!

Veya TQm*sayı 0-9yerine numara yapmasına izin verilirse1-10

Ya TL*da rekabetçi olmayacaksak.


2

Javascript (ES6), 34 31 bayt

a=>{for(i=0;i<11;)alert(++i*a)}
(a)=>{for(i=0;i<11;++i)alert(i*a)}

Grizzly sayesinde 3 bayt kaydedildi.


En azından parantezlere ihtiyacınız yok a, ama bence onun pozisyonu konusunda yaratıcı olmak da mümkün ++.
Neil

2

Cubix , 24 bayt

;;..I1.N-?W.;;)W@/So..*O

Cubix 2 boyutlu, yığın tabanlı bir esolang. Cubix, kaynak kodun bir küpün dışına sarılması bakımından diğer 2D şeritlerden farklıdır.

Çevrimiçi test edin! Not: kodu kopyalayıp yapıştırmanız gerekir ve yinelemeler arasında 50 ms gecikme olur.

açıklama

Yorumlayıcının yaptığı ilk şey, kodun sığacağı en küçük küpü bulmaktır. Bu durumda kenar uzunluğu 1'dir. Daha sonra kod, .altı tarafın tümü dolana kadar ops ile doldurulur. Boşluk işlemeden önce kaldırılır, bu nedenle bu kod yukarıdakilerle aynıdır:

    ; ;
    . .
I 1 . N - ? W .
; ; ) W @ / S o
    . .
    * O

İşte yeni yığın seçeneklerini kullanan biraz daha kısa bir taneI.0.WrN;-!@vrW>r)*O;o
MickyT
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.