Wydrukuj tabliczki mnożenia według danych wejściowych


11

W tym wyzwaniu musisz wydrukować tabliczki mnożenia według danych wejściowych. Oto kilka przykładów:

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

Zasady

  1. Najkrótszy kod w bajtach wygrywa.

  2. To wyzwanie jest golfem kodowym, podlega ogólnym zasadom ( )

  3. Jeśli tylko jeśli twój kod nie może wydrukować numeru, możesz użyć liter, oto przykład:

    Wejście: B

    Wyjście: BDFHJLNPRT

  4. Możesz zacząć od 0 lub swojego numeru (np. 20). Możesz wybrać, czy wstawić spacje, czy nie. Wyzwanie jest bezpłatne, wystarczy wziąć dane wejściowe i wydrukować tabliczki mnożenia.

  5. Twój wynik musi zawierać listę pierwszych 10 elementów tabeli czasów dla podanej liczby. Możesz pominąć 0 * n.


9
Twój pierwszy przykład ma wielokrotności od 0 do 10, drugi od 1 do 10. Czy możemy wybrać jeden z nich, czy też jeden z nich to literówka? Ponadto, czy dane wyjściowe muszą być oddzielone spacją, czy możemy używać innych formatów list? (Jeśli tylko spacje, w twoim przykładzie liczba spacji jest nieco losowa).
— Martin Ender

Możesz zacząć od 0 lub swojego numeru (np. 20). Możesz wybrać, czy wstawić spacje, czy nie. Wyzwanie jest bezpłatne, wystarczy wziąć dane wejściowe i wydrukować tabliczki mnożenia.
— Rizze

4
Witamy w PPCG! Miło widzieć dość proste wyzwanie, ponieważ nie mamy ich wystarczająco dużo, chociaż w przyszłości dodam więcej informacji. Na przykład: z przypadków testowych wydaje się, że musimy wypisać tylko 10 liczb, ale nie widzę tego określonego. Czy musimy wspierać negatywne dane wejściowe? Dlaczego są dwie spacje między 2 a 4? Dlaczego pierwszy przypadek testowy ma 0 na wyjściu (co daje 11 liczb wyjściowych zamiast 10). itd. itd. Również piaskownica dla proponowanych wyzwań jest dobrym miejscem do postawienia posta jako pierwszego w celu udoskonalenia wyzwania
— Kevin Cruijssen,

Zgodnie z regułą 3, jaki powinien Cbyć wynik? Jak o Z?
— Lynn,

1
Czym dokładnie jest wyjście, normalne reguły zwykle pozwalają funkcji zwracać dane wyjściowe jako listę, zamiast wypisywać je do STDOUT.
— Brad Gilbert b2gills,

Odpowiedzi:



10

C #, 105 96 67 56 bajtów

Teraz, gdy wiem, jak działa lambda w C #, oto aktualizacja mojej pierwszej odpowiedzi:

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

Oszczędza 11 bajtów.


Pierwszy post, proszę wybacz mi wszystko, co zrobiłem źle. Ponadto, nie krępuj się dać mi wskazówki dotyczące gry w golfa, ponieważ tak naprawdę wcześniej tego nie próbowałem!

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

Nie golfowany:

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

Dziękuję Jonathan Allan, nie mogę jeszcze dodawać komentarzy. I dziękuję Kevin Cruijssen. Zakładałem, że zawsze muszę dołączać cały program, chyba że pytanie określa, że ​​fragmenty są dozwolone. Czy mógłbym również pominąć System. w tym przypadku zadzwoń, aby wydrukować na konsolę, czy wtedy wymagane jest użycie / importowanie?


1
Witamy w PPCG! Możesz usunąć klasę, tylko podstawowa funkcja jest wymagana przez zasady gry w golfa :)
— Jonathan Allan

1
@JathanathanAllan Nie tylko to, ale według tych samych zasad możesz także stworzyć osobną metodę bez żadnych ograniczeń Main. Tj. void f(int n){for(int i=0;i++<10;){System.Console.Write(i*n+" ");}}I rzeczywiście, witamy w PPCG!
— Kevin Cruijssen


9

Galaretka , 3 bajty

⁵R×

Przetestuj to w TryItOnline
Lub pierwszych 256 skrzynek, ładnie dopasowanych, również w TryItOnline

W jaki sposób?

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

Chciałbym nauczyć się galaretki, ale połowa poleceń nie jest dla mnie renderowana, więc byłoby to bezużyteczne: D
— Rozpad

@BetaDecay Nie mogę wpisać większości z nich i nie wyświetlają się dla mnie w żadnym edytorze tekstu ani w wierszu cmd :( - renderują się dobrze w przeglądarce Firefox na moim komputerze z systemem Windows 7.
— Jonathan Allan,

Ty i Emigma wygrywacie.
— Rizze

@BetaDecay - Może pomóc Ci pobrać i (ponownie) zainstalować czcionkę DejaVu Sans Mono (widzę teraz prawie każdą postać w notatniku ++, a TIO przez Firefoksa również jej używa i wyświetla każdą postać nadal)
— Jonathan Allan

Dokładnie to, o czym myślałem, +1.
— Erik the Outgolfer,

8

Clojure, 70 80 bajtów

To jest mój pierwszy post na CG, mam nadzieję, że dane są prawidłowe:

70 bajtów

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

80 bajtów

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

Program odczyta liczbę jako argument stdin i wyświetli wynik:

Wynik

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

5
Witamy! To świetna pierwsza odpowiedź!
— mbomb007,


6

Perl, 19 bajtów

Obejmuje +1 dla -n

Uruchom z wejściem na STDIN:

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

table.pl:

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

Prawdopodobnie miałeś na myśli -n? czy coś mi umknęło?
— Dada,

@Dada: racja, połączyła go z inną wersją. Naprawiono
— Ton Hospel,

5

Haskell, 16 bajtów

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

Przykład użycia: (<$>[1..10]).(*) $ 4-> [4,8,12,16,20,24,28,32,36,40].

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


Co ma <$>zrobić?
— Cyoce,

@Cyoce: <$>jest niepoprawną wersją fmap(lub mapgdy jest używana z listą), tzn. Zastosowała funkcję podaną jako pierwszy argument do każdego elementu listy. func <$> list= fmap func list= map func list.
— nimi



4

PHP, 34 bajty

(34 bajty)

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

(34 bajty)

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

(34 bajty)

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

(35 bajtów)

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

( 41 40 bajtów)

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

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

(44 bajty)

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

Jedna z użyciem range()z $stepmoże być krótszy, jeśli zaczniesz ją od 0: <?=join(' ',range(0,10*$a=$argv[1],$a));.
— manatwork

Reguła zezwalająca na rozpoczęcie od 0 nie była ustawiona, kiedy to zrobiłem, ale masz rację; Aktualizuję ten.
— Crypto

4

J, 8 bajtów

(i.10)&*

Jest to zakres od 0do 9włącznie ( i.10) bonded ( &) z funkcją mnożenia ( *). Zaczyna się od zera.

Przypadki testowe

   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 znaków

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

Przykładowy przebieg:
(Jest to interaktywny sposób uruchomienia, równoważny z 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 bajtów

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

3 bajty zapisane dzięki @manatwork

Formatowanie danych wyjściowych nie jest widocznie konieczne


1
Pożycz z mojej odpowiedzi powłoki:lambda n:" ".join(map(str,range(0,n*11,n)))
— manatwork

@manatwork Używam Python 3
— TuxCrafting

1
Używasz Python 3, ale możesz zaoszczędzić 6 bajtów, używając Python 2:lambda n:range(0,11*n,n)
— Jonathan Allan,

3

Mata, 15 29 bajtów

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

Mata jest językiem programowania matrycowego w pakiecie statystyk handlowych Stata. Kod tworzy macierz, mnoży przez dane wejściowe (w tym przypadku 2) i generuje nową macierz

Wynik

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

1
Jak to bierze wkład? Musi też nadawać się do wielokrotnego użytku.
— Jonathan Allan

1
OK, edytowałem, aby wyjaśnić otrzymanie danych wejściowych
— f1rstguess


3

Stata, 46 bajtów

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

Wynik

Dla i = 15

    +-----+
    |   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 |

Istnieje kilka dodatkowych skrótów, których możesz użyć tutaj: ob dla obs, g dla gen i l dla listy. Czy jest również możliwe, aby x był _n * `i 'zamiast używać dwóch zmiennych? Nigdy wcześniej nie widziałem argumentów w STATA. Dzięki za pokazanie mi czegoś nowego!
— zaznacza

3

Cheddar , 20 bajtów

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

Tak dla funkcjonalnego \ o /

Nie sądzę, że to wymaga wyjaśnienia, ale jeśli chcesz mnie dodać, po prostu zapytaj :)


Powinienem nauczyć się Cheddaru. I co n&(*)zrobić? Zakładam, że (*)oznacza to samo, co oznacza, że ​​mam haskell, ale co robi &w tym kontekście?
— Cyoce,

@Cyoce jest wiązanie
— Downgoat

3

Java 7, 61 57 bajtów

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

Przypadki bez golfa i testy:

Wypróbuj tutaj.

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);
  }
}

Wynik:

2468101214161820
20406080100120140160180200

Spacje są opcjonalne, System.out.print (i * n); zaoszczędzi 4 bajty
— CameronD17

@ CameronD17 Ach, ta zasada została dodana po udzieleniu tej odpowiedzi, ale dziękuję za wzmiankę. Usunąłem to.
— Kevin Cruijssen

3

JavaScript (ES6), 33 31 bajtów

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

To rozwiązanie rekurencyjne.



3

Scala, 24 bajty

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

Wyjaśnienie:

(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 bajtów

,10y:[?]z:*a

Wypróbuj online!

Muszę to wdrożyć I * [A, B, C] = [I*A, I*B, I*C] …

Wyjaśnienie

,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 bajtów

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

Oczekuje danych wejściowych jako jednego bajtu (ponieważ BF może działać tylko na liczbach do 255) i zwraca wyniki jako pojedyncze bajty. Niektóre wartości mogą wyglądać jak ASCII, ale nie powinny być traktowane jako takie; spójrz na dziesiętną reprezentację zwracanych bajtów.

Wypróbuj online!


Możesz zapisać 5 bajtów, wykonując>, [> +> ++> +++> ++++> +++++> ++++++> +++++++> ++++ ++++> +++++++++> ++++++++++ [<]> -]> [.>]
— Jeff

@Jeff Niestety, to przerywa wszelkie dane wejściowe większe niż 25, ponieważ bajt się przepełni, resetując do 0. Przepełnienia 0są dopasowywane [<], co powoduje, że cała pętla procesu jest nieskończona.
— Steven H.

Tak, ale przepełnione bajty i tak powodują niepoprawne dane wyjściowe kodu, prawda?
— Jeff

1
@Jeff Są poprawnymi wyjściami, działają tylko w modie 255.
— Steven H.

2

JavaScript, 42 bajty

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

Nie znam bardzo dobrze JS, czy możesz przenieść przyrost do części testowej for?
— Jonathan Allan,

Zredagowałem to. Teraz jest ok.
— Rizze

Ostrzega teraz za pomocą alert ().
— Rizze

To ostrzegało mnie bez ostrzeżenia: tutaj - cofam to, muszę kliknąć „uruchom”, a nie tylko „spróbuj”, aby ponownie załadować
— Jonathan Allan,

1
@JonathanAllan What?
— Rizze

2

MATLAB, 12 bajtów

@(x)x*[1:10]

Nie bardzo. Anonimowa funkcja, która pobiera xdane wejściowe i mnoży je przez wektor[1:10] . Wyświetla się jako ans = 2 4 6 ... Działa również w Octave.

Wypróbuj online .


2

PowerShell v2 +, 23 bajty

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

Staje się przez wprowadzanie poleceń argumencie linii pętle w całym zakresie 1do 10, każdej pętli składającej ten numer *$nw rurociągu. Dane wyjściowe poprzez niejawne Write-Outputna końcu wykonania programu skutkują wartościami oddzielonymi znakiem nowej linii.

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 bajty

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

Nie golfowany:

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

Kompiluj i uruchamiaj z (wejście 4)

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

Wynik

40 36 32 28 24 20 16 12 8 4 

Sprawdź to

Demo



2

JavaScript (ES6), 34 31 bajtów

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

Zaoszczędź 3 bajty dzięki grizzly.


Przynajmniej nie potrzebujesz nawiasów wokół a, ale myślę, że można być kreatywnym co do pozycji ++.
— Neil

2

Cubix , 24 bajty

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

Cubix to dwuwymiarowy esolang oparty na stosie. Cubix różni się od innych języków 2D tym, że kod źródłowy jest owinięty na zewnątrz sześcianu.

Przetestuj online!Uwaga: musisz skopiować i wkleić kod, a między iteracjami występuje opóźnienie 50 ms.

Wyjaśnienie

Pierwszą rzeczą, jaką robi interpreter, jest ustalenie najmniejszej kostki, na której będzie pasował kod. W tym przypadku długość krawędzi wynosi 1. Następnie kod jest .uzupełniany brakiem operacji, aż wszystkie sześć stron zostanie wypełnione. Białe znaki są usuwane przed przetwarzaniem, więc ten kod jest identyczny z powyższym:

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

Oto nieco krótszy z nowymi opcjami stosuI.0.WrN;-!@vrW>r)*O;o
— MickyT,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.