Друкуйте таблиці множення за допомогою введення


11

У цьому виклику ви повинні надрукувати таблиці множення за допомогою введення. Ось кілька прикладів:

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

Правила

  1. Виграє найкоротший код у байтах.

  2. Це завдання - код-гольф, він відповідає загальним правилам ( )

  3. Якщо, лише якщо ваш код не може надрукувати номер, ви можете використовувати літери, ось приклад:

    Вхід: B

    Вихід: BDFHJLNPRT

  4. Ви можете почати з 0 або свого номера (наприклад, 20). Ви можете вибрати, розміщувати пробіли чи ні. Завдання безкоштовне, просто візьміть таблиці та множення даних для введення та друку.

  5. Вихідні дані повинні перераховувати перші 10 членів таблиці часу для даного числа. Ви можете залишити 0 * n.


9
У вашому першому прикладі кратні від 0 до 10, у другому від 1 до 10. Чи можемо ми вибрати один із них чи це один з них помилковий? Крім того, чи повинен виводити пробіл або ми можемо використовувати інші формати списку? (Якщо тільки пробіли, то кількість пробілів у вашому прикладі трохи випадкова.)
Мартін Ендер

Ви можете почати з 0 або свого номера (наприклад, 20). Ви можете вибрати, розміщувати пробіли чи ні. Завдання безкоштовне, просто візьміть таблиці та множення даних для введення та друку.
Rizze

4
Ласкаво просимо до PPCG! Приємно бачити досить простий виклик, оскільки у нас їх недостатньо, хоча в майбутньому я б додав ще трохи інформації. Як: З тестових випадків, здається, нам потрібно вивести лише 10 чисел, але я цього не бачу. Чи потрібно підтримувати негативний внесок? Чому є два проміжки між 2 і 4? Чому перший тестовий випадок має 0 на виході (що робить 11 вихідних чисел замість 10). тощо. Також пісочниця для запропонованих викликів - це гарне місце, коли слід спочатку відправитись, щоб вдосконалити виклик
Кевін Круїйсен

За правилом 3, яким повинен бути вихід C? Як щодо Z?
Лінн

1
Що саме являє собою вихід, звичайні правила, як правило, дозволяють функції повертати свої результати у вигляді списку, а не друкувати їх у STDOUT.
Бред Гілберт b2gills

Відповіді:



10

C #, 105 96 67 56 байт

Тепер, коли я знаю, як працює лямбда в C #, ось оновлення моєї першої відповіді:

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

Економить 11 байт.


Перший пост, будь ласка, пробач мене за все, що я зробив не так. Крім того, не соромтесь давати мені поради щодо гольфу, так як я ще не дуже пробував цього!

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

Безголівки:

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

Дякую, Джонатан Аллан, поки що не можу додати коментарів. І дякую Кевін Кройсейсен. Я припускав, що я повинен завжди включати всю програму, якщо в питанні не вказано, що фрагменти дозволені. Чи можу я також мати можливість залишити систему. в цьому випадку заклик до друку для консолі, або використовується / потрібен імпорт?


1
Ласкаво просимо до PPCG! Ви можете видалити клас, тільки основна функція потрібна за правилами гольфу :)
Джонатан Аллан

1
@JonathanAllan Мало того, але за тими самими правилами ви також можете просто зробити окремий метод, не маючи Mainвзагалі. Тобто, void f(int n){for(int i=0;i++<10;){System.Console.Write(i*n+" ");}}дійсно, ласкаво просимо до PPCG!
Кевін Кройсейсен


9

Желе , 3 байти

⁵R×

Перевірте це в TryItOnline
Або перші 256 випадків, добре вирівняних, також у TryItOnline

Як?

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

Я хотів би вивчити Jelly, але половина команд не видає мене, тому було б марно: D
бета-розпад

@BetaDecay Я не можу вводити більшість з них, і вони не відображають мене в жодному текстовому редакторі або в моєму cmd рядку :( - вони добре відображаються у Firefox на моїй машині Windows 7. Хоча
Джонатан Аллан

Ви та Емігма виграєте.
Rizze

@BetaDecay - Це може допомогти вам завантажити та (повторно) встановити шрифт DejaVu Sans Mono (тепер я бачу майже кожен символ у блокноті ++, а TIO через Firefox зараз теж використовує його та відображає кожен персонаж)
Джонатан Аллан

Точно те, що я подумав, +1.
Ерік Аутгольфер

8

Clojure, 70 80 байт

Це моє перше повідомлення в CG, я сподіваюся, що введення все нормально

70 байт

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

80 байт

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

Програма прочитає число як аргумент stdin та відобразить результат:

Вихідні дані

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

5
Ласкаво просимо! Це чудова перша відповідь!
mbomb007


6

Perl, 19 байт

Включає +1 для -n

Запустити з введенням STDIN:

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

table.pl:

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

Ви, мабуть, мали на увазі -n? чи я щось пропустив?
Дада

@Dada: правильно, зв’язав це з іншою версією. Виправлено
Євангеліє Тон

5

Хаскелл, 16 байт

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

Приклад використання: (<$>[1..10]).(*) $ 4-> [4,8,12,16,20,24,28,32,36,40].

Pointfree версія: f n = map (n*) [1..10].


Що робить <$>?
Кіос

@Cyoce: <$>це інфікована версія fmap(або mapпри використанні зі списком), тобто вона застосувала функцію, що дається як 1-й аргумент до кожного елемента списку. func <$> list= fmap func list= map func list.
німі



4

PHP, 34 байти

(34 байти)

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

(34 байти)

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

(34 байти)

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

(35 байт)

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

( 41 40 байт)

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

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

(44 байти)

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

Один , використовуючи range()з $stepможе бути коротше , якщо ви починаєте його від 0: <?=join(' ',range(0,10*$a=$argv[1],$a));.
манатурка

Правило, що дозволяє починати з 0, не було встановлено, коли я це зробив, але ви праві; Я оновлюю цю.
Крипто

4

J, 8 байт

(i.10)&*

Це діапазон від 0до 9включно ( i.10) митний ( &) дотепності функції множення ( *). Це починається з нуля.

Тестові справи

   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

Зш, 19 символів

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

Вибірка зразка:
(Це інтерактивний спосіб його виконання, еквівалентний 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 байт

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

3 байти збережено завдяки @manatwork

Форматування виводу, очевидно, не потрібно


1
Позичте з моєї відповіді на оболонку:lambda n:" ".join(map(str,range(0,n*11,n)))
маніпулювання

@manatwork Я використовую Python 3
TuxCrafting

1
Ви використовуєте Python 3, але ви можете зберегти 6 байт, використовуючи Python 2:lambda n:range(0,11*n,n)
Джонатан Аллан

3

Мата, 15 29 байт

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

Mata - мова матричного програмування в пакеті комерційної статистики Stata. Код створює матрицю, множиться на вхід (2 у цьому випадку) і виводить нову матрицю

Вихідні дані

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

1
Як це приймає внесок? Її теж потрібно багаторазово використовувати.
Джонатан Аллан

1
Добре, відредагували, щоб уточнити отримання входу
f1rstguess


3

Stata, 46 байт

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

Вихідні дані

Для 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 |

Тут ви можете скористатися кількома додатковими скороченнями: ob для obs, g для gen та l для списку. Також, чи можна мати x be _n * `i 'замість двох змінних? Я ніколи не бачив арґу в STATA. Дякуємо, що показали мені щось нове!
позначки

3

Чеддар , 20 байт

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

Так, функціональний \ o /

Я не думаю, що це потребує пояснень, але якщо ви хочете додати мене, просто запитайте :)


Я повинен навчитися Чеддара. А що робить n&(*)? Я припускаю, що (*)означає те саме, що я означає, що я haskell, але що &робити в цьому контексті?
Кіос


3

Java 7, 61 57 байт

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

Невикористані та тестові справи:

Спробуйте тут.

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

Вихід:

2468101214161820
20406080100120140160180200

Пробіли необов’язкові, System.out.print (i * n); врятувало б 4 байти
CameronD17,

@ CameronD17 О, це правило було додано після того, як я зробив цю відповідь, але дякую за згадування. Я її зняв.
Кевін Кройсейсен

3

JavaScript (ES6), 33 31 байт

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

Це рекурсивне рішення.


3

T-SQL 61 байт

Замініть n числом, на яке потрібно заповнити таблицю. Демо

SELECT TOP 11 number*n FROM master..spt_values WHERE type='P'

spt_value - це незадокументована таблиця в SQL Server, ви можете прочитати більше про цю таблицю в

Я сподіваюся, що хтось придумає краще рішення TSQL.


3

Скала, 24 байти

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

Пояснення:

(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

brainf *** , 84 байти

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

Очікує введення в якості одного байту (оскільки BF може працювати лише на числах до 255) і повертає результати як одиничні байти. Деякі значення можуть виглядати як ASCII, але вони не повинні розглядатися як такі; подивіться на десяткове представлення повернених байтів.

Спробуйте в Інтернеті!


Ви можете зберегти 5 байт, виконавши>, [> +> ++> +++> ++++> +++++> ++++++> +++++++> ++++ ++++> +++++++++> ++++++++++ [<]> -]> [.>]
Jeff

@Jeff На жаль, що перерви будь-якого входу, вище , ніж 25 , так як байти будуть переповнюватися, скидаючи на 0. Переповнення 0s отримати Важливо [<], що робить весь цикл процесу нескінченно.
Стівен Х.

Правильно, але переповнені байти все одно призводять до неправильних результатів із кодом, чи не так?
Джефф

1
@Jeff Це правильні виходи, вони просто працюють в моді 255.
Стівен Х.

2

JavaScript, 42 байти

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

Я не знаю JS дуже добре, чи можете ви перемістити приріст у тестову частину для?
Джонатан Аллан

Я це відредагував. Зараз це нормально.
Різзе

Він оповіщає зараз за допомогою попередження ().
Різзе

Мене це насторожило без попередження: ось - я повертаю це назад, потрібно натиснути "запустити", а не просто "спробувати", щоб перезавантажити
Джонатан Аллан

1
@JonathanAllan Що?
Rizze


2

PowerShell v2 +, 23 байти

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

Здійснює введення через аргумент командного рядка, перебирає діапазон 1на 10, кожен цикл розміщує це число *$nна конвеєрі. Виведення через неявне Write-Outputв кінці виконання програми призводить до значень, розділених новим рядком.

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 байти

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

Безголівки:

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

Скомпілювати та запустити (вхід 4)

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

Вихідні дані

40 36 32 28 24 20 16 12 8 4 

Перевірте це

Demo



2

Javascript (ES6), 34 31 байт

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

Збережено 3 байти завдяки грізлі.


Принаймні, вам не потрібні дужки навколо a, але я думаю, що також можна бути творчим щодо позиції ++.
Ніл

2

Кубікс , 24 байти

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

Cubix - це двовимірний езоланг на основі стека. Cubix відрізняється від інших 2D язиків тим, що вихідний код обмотаний навколо куба.

Перевірте це в Інтернеті! Примітка: вам доведеться скопіювати і вставити код, і між ітераціями є затримка на 50 мс.

Пояснення

Перше, що робить перекладач - це розібрати найменший кубик, на який впишеться код. У цьому випадку довжина краю дорівнює 1. Потім код прокладений без опу, .поки всі шість сторін не заповнені. Білий простір видаляється перед обробкою, тому цей код ідентичний наведеному:

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

Ось трохи коротший варіант із використанням нових варіантів стекуI.0.WrN;-!@vrW>r)*O;o
MickyT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.