Распечатать таблицы умножения по вводу


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. Можем ли мы выбрать один из них или один из них является опечаткой? Кроме того, вывод должен быть разделен пробелом или мы можем использовать другие форматы списка? (Если только пробелы, количество пробелов в вашем примере немного случайное.)
Martin Ender

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

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

Ungolfed:

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

Спасибо Джонатан Аллан, пока не могу добавлять комментарии. И спасибо Кевину Круйссену. Я предполагал, что мне всегда нужно включать всю программу, если только в вопросе не указано, что фрагменты разрешены. Смогу ли я также опустить Систему. в этом случае вызовите команду print на консоль, или тогда требуется использование / import?


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
Beta Decay

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

Вы и Эмигма побеждаете.
Риззе

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

Именно то, о чем я думал, +1.
Эрик Outgolfer

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

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

Выход

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? или я что то пропустил?
Дада

@ Дада: правильно, отождествил это с другой версией. Исправлено
Тон Хоспел

5

Haskell, 16 байт

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

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

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


Что делает <$>?
Cyoce

@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));.
manatwork

Правило, позволяющее начинать с 0, не было установлено, когда я это сделал, но вы правы; Я обновляю это.
Крипто

4

J, 8 байт

(i.10)&*

Это диапазон от 0до 9включенного ( i.10) bonded ( &) с функцией умножения ( *). Это начинается с нуля.

Контрольные примеры

   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

Стата, 46 байт

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

Выход

Для я = 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 быть _n * `i 'вместо использования двух переменных? Я никогда не видел аргументов в STATA. Спасибо, что показали мне что-то новое!
отмечается

3

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

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

Яй для функционала \ о /

Я не думаю, что это нуждается в объяснении, но если вы хотите, чтобы я добавил, просто спросите :)


Я должен выучить Чеддера. А что делает n&(*)? Я предполагаю, что (*)означает то же самое, что и я, haskell, но что &делать в этом контексте?
Cyoce


3

Java 7, 61 57 байт

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

Ungolfed и тестовые случаи:

Попробуй это здесь.

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

брейнф *** , 84 байта

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

Ожидает ввод в виде одного байта (поскольку BF может работать только с числами до 255) и возвращает результаты в виде одного байта. Некоторые значения могут выглядеть как ASCII, но они не должны рассматриваться как таковые; посмотрите на десятичное представление возвращаемых байтов.

Попробуйте онлайн!


Вы можете сохранить 5 байтов, выполнив>, [> +> ++> +++> ++++> +++++> ++++++> +++++++> ++++ ++++> +++++++++> ++++++++++ [<]> -]> [.>]
Джефф

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

Правильно, но переполнение байтов в любом случае приводит к некорректным выводам вашего кода, не так ли?
Джефф

1
@Jeff Они правильные результаты, они просто работают в моде 255.
Стивен Х.

2

JavaScript, 42 байта

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

Я не очень хорошо знаю JS, вы можете переместить приращение в тестовую часть for?
Джонатан Аллан

Я редактировал это. Теперь все в порядке.
Ризз

Это предупреждает теперь с alert ().
Ризз

Он предупреждал меня без предупреждения: здесь - я забираю это назад, нужно нажать «запустить», а не просто «попытаться» перезагрузить
Джонатан Аллан

1
@JonathanAllan Что?
Риззе

2

MATLAB, 12 байт

@(x)x*[1:10]

Не очень много для этого. Анонимная функция, которая принимает в xкачестве входных данных и умножает ее на вектор [1:10]. Отображается как ans = 2 4 6 ... Также работает в Октаве.

Попробуйте онлайн .


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

Ungolfed:

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

Cubix , 24 байта

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

Cubix - это двумерный esolang на основе стека. 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.