Stampa tabelle di moltiplicazione per input


11

In questa sfida devi stampare le tabelline per input, Ecco alcuni esempi:

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

Regole

  1. Vince il codice più breve in byte.

  2. Questa sfida è un code-golf, segue le regole generali del ( )

  3. Se, solo se, il tuo codice non è in grado di stampare il numero, puoi usare le lettere, ecco un esempio:

    Ingresso: B

    Uscita: BDFHJLNPRT

  4. Puoi scegliere di iniziare da 0 o dal tuo numero (come 20). Puoi scegliere se inserire spazi o no. La sfida è gratuita, basta inserire un input e stampare tabelle di moltiplicazione.

  5. L'output deve elencare i primi 10 membri della tabella dei tempi per il numero specificato. Puoi tralasciare 0 * n.


9
Il tuo primo esempio ha multipli da 0 a 10, il secondo da 1 a 10. Possiamo scegliere uno di questi o uno di questi è un errore di battitura? Inoltre, l'output deve essere separato dallo spazio o possiamo usare altri formati di elenco? (Se solo spazi, il numero di spazi è un po 'casuale nel tuo esempio.)
Martin Ender

Puoi scegliere di iniziare da 0 o dal tuo numero (come 20). Puoi scegliere se inserire spazi o no. La sfida è gratuita, basta inserire un input e stampare tabelle di moltiplicazione.
Rizze,

4
Benvenuti in PPCG! È bello vedere una sfida piuttosto semplice, dal momento che non ne abbiamo abbastanza, anche se in futuro aggiungerei qualche informazione in più. Come: dai casi di test sembra che dobbiamo solo produrre 10 numeri, ma non vedo questo specificato. Dobbiamo supportare input negativi? Perché ci sono due spazi tra 2 e 4? Perché il primo test case ha lo 0 nel suo output (rendendolo 11 numeri di output invece di 10). ecc. ecc. Inoltre, il Sandbox per le sfide proposte è un buon posto per pubblicare prima per perfezionare la sfida
Kevin Cruijssen,

Secondo la regola 3, quale dovrebbe essere l'output C? Che ne dici Z?
Lynn,

1
Qual è esattamente l'output, le normali regole tendono a consentire a una funzione di restituire l'output come elenco anziché stamparli su STDOUT.
Brad Gilbert b2gills

Risposte:



10

C #, 105 96 67 56 byte

Ora che so come funziona lambda in C #, ecco un aggiornamento alla mia prima risposta:

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

Salva 11 byte.


Primo post, ti prego di perdonarmi per tutto ciò che ho fatto di sbagliato. Inoltre, sentiti libero di darmi consigli sul golf, dato che non l'ho mai provato prima!

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

Grazie Jonathan Allan, non posso ancora aggiungere commenti. E grazie Kevin Cruijssen. Supponevo di dover includere sempre l'intero programma a meno che la domanda non specificasse che erano consentiti frammenti. Potrei anche tralasciare il sistema. chiamare per stampare su console in questo caso, oppure sono richiesti / importati allora?


1
Benvenuti in PPCG! Puoi rimuovere la classe, solo la funzione principale è richiesta dalle regole del golf :)
Jonathan Allan,

1
@JonathanAllan Non solo, ma con quelle stesse regole puoi anche creare un metodo separato senza del Maintutto. Cioè void f(int n){for(int i=0;i++<10;){System.Console.Write(i*n+" ");}}E davvero, benvenuto in PPCG!
Kevin Cruijssen,


9

Gelatina , 3 byte

⁵R×

Provalo su TryItOnline
O sui primi 256 casi, ben allineati, anche su TryItOnline

Come?

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

Mi piacerebbe imparare Jelly ma metà dei comandi non vengono visualizzati per me, quindi sarebbe inutile: D
Decadimento beta

@BetaDecay Non riesco a digitare la maggior parte di essi e non eseguono il rendering per me in nessun editor di testo o sulla mia linea cmd :( - eseguono comunque il rendering bene in Firefox sul mio computer Windows 7.
Jonathan Allan

Tu ed Emigma state vincendo.
Rizze,

@BetaDecay - Potrebbe aiutarti a scaricare e (reinstallare) il font DejaVu Sans Mono (ora riesco a vedere quasi tutti i personaggi di Notepad ++ e TIO tramite Firefox lo sta usando anche adesso e mostra ancora tutti i personaggi)
Jonathan Allan

Esattamente quello che ho pensato, +1.
Erik the Outgolfer,

8

Clojure, 70 80 byte

Questo è il mio primo post su CG, spero che l'input sia OK:

70 byte

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

80 byte

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

Il programma leggerà un numero come argomento stdin e visualizzerà il risultato:

Produzione

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

5
Benvenuto! Questa è un'ottima prima risposta!
mbomb007,

7

05AB1E , 3 byte

TL*

Spiegazione

T    # literal predefined  as 10
 L   # 1-based range: [1,2,3,4,5,6,7,8,9,10]
  *  # multiply with input

Provalo online!


Tu e Jonathan Allan state vincendo
Rizze

6

Perl, 19 byte

Include +1 per -n

Esegui con l'input su STDIN:

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

table.pl:

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

Probabilmente intendevi -n? o mi sono perso qualcosa?
Dada,

@Dada: giusto, integrato con un'altra versione. Risolto
Ton Hospel

5

Haskell, 16 byte

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

Esempio di utilizzo: (<$>[1..10]).(*) $ 4 -> [4,8,12,16,20,24,28,32,36,40].

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


Cosa fa <$>?
Cyoce,

@Cyoce: <$>è una versione infix di fmap(o mapquando utilizzata con un elenco), ovvero applica la funzione fornita come primo argomento a ogni elemento dell'elenco. func <$> list= fmap func list= map func list.
nimi,


4

R, 11 byte

scan()*0:10

30 caratteri


4

PHP, 34 byte

(34 byte)

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

(34 byte)

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

(34 byte)

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

(35 byte)

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

( 41 40 byte)

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

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

(44 byte)

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

L'uno che utilizza range()con $steppuò essere più breve se si inizia da 0: <?=join(' ',range(0,10*$a=$argv[1],$a));.
arte

La regola che consente di iniziare da 0 non è stata impostata quando l'ho fatto, ma hai ragione; Lo aggiorno.
Crypto,

4

J, 8 byte

(i.10)&*

Questo è l'intervallo da 0a 9compreso ( i.10) bonded ( &) con la funzione di moltiplicazione ( *). Questo inizia da zero.

Casi test

   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 caratteri

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

Esempio di esecuzione:
(Questo è il modo interattivo per eseguirlo, equivalente a 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 byte

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

3 byte salvati grazie a @manatwork

La formattazione dell'output è visibilmente non necessaria


1
Prendi in prestito dalla mia risposta di shell:lambda n:" ".join(map(str,range(0,n*11,n)))
manatwork

@manatwork Uso Python 3
TuxCrafting il

1
Si utilizza Python 3 ma è possibile salvare 6 byte utilizzando Python 2:lambda n:range(0,11*n,n)
Jonathan Allan

3

Mata, 15 29 byte

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

Mata è il linguaggio di programmazione matriciale nel pacchetto di statistiche commerciali di Stata. Il codice crea una matrice, si moltiplica per l'input (2 in questo caso) e genera la nuova matrice

Produzione

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

1
Come sta prendendo input? Deve anche essere riutilizzabile.
Jonathan Allan,

1
OK, ho modificato per chiarire la ricezione dell'input
f1rstguess


3

Stata, 46 byte

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

Produzione

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

Ci sono alcune scorciatoie extra che puoi usare qui: ob for obs, g for gen e l for list. Inoltre, è possibile avere x essere _n * `i 'invece di usare due variabili? Non avevo mai visto args prima in STATA. Grazie per avermi mostrato qualcosa di nuovo!
segna il

3

Cheddar , 20 byte

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

Sì per funzionale \ o /

Non credo che questo abbia bisogno di spiegazioni, ma se vuoi aggiungerne uno, basta chiedere :)


Dovrei imparare il cheddar. E che cosa n&(*)fare? Sto assumendo (*)significa la stessa cosa significa che sono Haskell, ma cosa &fare in quel contesto?
Cyoce,

@Cyoce è incollaggio
Downgoat

3

Java 7, 61 57 byte

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

Casi non testati e test:

Provalo qui.

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

Produzione:

2468101214161820
20406080100120140160180200

Gli spazi sono opzionali, System.out.print (i * n); risparmierebbe 4 byte
CameronD17

@ CameronD17 Ah, questa regola è stata aggiunta dopo aver fatto questa risposta, ma grazie per averlo menzionato. L'ho rimosso.
Kevin Cruijssen,

3

JavaScript (ES6), 33 31 byte

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

È una soluzione ricorsiva.



3

Scala, 24 byte

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

Spiegazione:

(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 byte

,10y:[?]z:*a

Provalo online!

Devo implementare quel I * [A, B, C] = [I*A, I*B, I*C]...

Spiegazione

,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 byte

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

Prevede l'input come singolo byte (poiché BF può operare solo su numeri fino a 255) e restituisce i risultati come singoli byte. Alcuni valori possono apparire come ASCII, ma non dovrebbero essere trattati come tali; guarda la rappresentazione decimale dei byte restituiti.

Provalo online!


Puoi salvare 5 byte facendo>, [> +> ++> +++> ++++> +++++> ++++++> +++++++> ++++ ++++> +++++++++> ++++++++++ [<]> -]> [.>]
Jeff

@Jeff Sfortunatamente, ciò interrompe qualsiasi input superiore a 25 perché il byte traboccerà, reimpostando a 0. L'overflow 0viene abbinato [<], il che rende l'intero ciclo infinito.
Steven H.

Giusto, ma i byte di overflow generano comunque output errati con il tuo codice, vero?
Jeff,

1
@Jeff Sono uscite corrette, funzionano solo nella mod 255.
Steven H.

2

JavaScript, 42 byte

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

Non conosco molto bene JS, puoi spostare l'incremento nella parte test del for?
Jonathan Allan,

L'ho modificato. È tutto apposto ora.
Rizze,

Avvisa ora con alert ().
Rizze,

Mi ha avvisato senza preavviso: qui - Riprendo ciò, è necessario fare clic su "Esegui", non solo "provare" per ricaricare
Jonathan Allan,

1
@JonathanAllan What?
Rizze,

2

MATLAB, 12 byte

@(x)x*[1:10]

Non molto. Una funzione anonima che accetta xcome input e la moltiplica per il vettore [1:10]. Visualizza come ans = 2 4 6 ... Funziona anche in Octave.

Provalo online .


2

PowerShell v2 +, 23 byte

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

Prende ingresso tramite argomento della riga di comando, loop nell'intervallo 1da 10, ogni ciclo ponendo quel numero *$nsulla tubazione. L'output tramite implicito Write-Outputalla fine dell'esecuzione del programma produce valori separati da nuova riga.

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 byte

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

Compila ed esegui con (input 4)

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

Produzione

40 36 32 28 24 20 16 12 8 4 

Provalo

Demo


2

Pyke, 5 byte

TSQm*

Provalo qui!

O TQm*se è permesso fare numeri 0-9anziché1-10

O TL*se stiamo diventando non competitivi.


2

Javascript (ES6), 34 31 byte

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

Salvato 3 byte grazie a grizzly.


Per lo meno non hai bisogno delle parentesi attorno al a, ma penso che sia anche possibile essere creativi riguardo alla posizione del ++.
Neil,

2

Cubix , 24 byte

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

Cubix è un esolang bidimensionale basato su stack. Cubix è diverso dalle altre lingue 2D in quanto il codice sorgente è racchiuso all'esterno di un cubo.

Provalo online! Nota: dovrai copiare e incollare il codice e c'è un ritardo di 50 ms tra le iterazioni.

Spiegazione

La prima cosa che fa l'interprete è capire il cubo più piccolo su cui si adatterà il codice. In questo caso, la lunghezza del bordo è 1. Quindi il codice viene riempito con nessuna operazione .fino a quando tutti e sei i lati sono riempiti. Lo spazio bianco viene rimosso prima dell'elaborazione, quindi questo codice è identico al precedente:

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

Eccone uno leggermente più corto usando le nuove opzioni di stackI.0.WrN;-!@vrW>r)*O;o
MickyT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.