通过输入打印乘法表


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)开始。您可以选择是否放置空格。挑战是免费的,只需输入并打印乘法表即可。
Rizze

4
欢迎来到PPCG!很高兴看到一个非常简单的挑战,因为我们还没有足够的挑战,尽管将来我会添加更多信息。像:从测试用例看来,我们只需要输出10个数字,但我没有看到指定的数字。我们需要支持否定输入吗?为什么2和4之间有两个空格?为什么第一个测试用例的输出中有0(使它成为11个输出数字而不是10个数字)。同样,建议的挑战沙箱也是发布第一个完善挑战的好地方
Kevin Cruijssen

根据规则3,输出C应为什么?怎么Z
林恩

1
输出的确切含义是,通常的规则倾向于使函数以列表形式返回其输出,而不是将其打印到STDOUT。
布拉德·吉尔伯特b2gills '16

Answers:



10

C#,105 96 67 56字节

现在,我知道lambda在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+" ");
    }
}

谢谢Jonathan Allan,还不能添加评论。谢谢凯文·克鲁伊森。我以为我必须始终包括整个程序,除非问题指定允许片段。我还能省去系统吗?在这种情况下调用打印到控制台,还是需要使用/导入?


1
欢迎来到PPCG!您可以删除该类,高尔夫球规则只要求主要功能:)
Jonathan Allan

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线:(使我-他们使我的Windows 7机器上,虽然在Firefox罚款。
乔纳森·艾伦

您和Emigma赢了。
里兹(Rizze)2013年

@BetaDecay-它可以帮助您下载和(重新)安装DejaVu Sans Mono字体(我现在可以在notepad ++中看到几乎每个字符,并且通过Firefox的TIO现在也正在使用它并仍显示每个字符)
Jonathan Allan

正是我所想到的+1。
暴民埃里克(Erik the 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)))))

程序将读取一个数字作为stdin参数并显示结果:

输出量

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

5
欢迎!这是一个很好的第一答案!
mbomb007'9


6

Perl,19个字节

包括+1的 -n

使用STDIN上的输入运行:

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

table.pl

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

你可能是-n什么意思?还是我错过了什么?
达达

@Dada:是的,将其与另一个版本混为一谈。固定
Ton Hospel '16

5

Haskell,16个字节

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

用法示例:(<$>[1..10]).(*) $ 4-> [4,8,12,16,20,24,28,32,36,40]

点的免费版本:f n = map (n*) [1..10]


怎么<$>办?
Cyoce's

@Cyoce:<$>fmap(或map与列表一起使用)的中缀版本,即它将第一个参数给出的函数应用于列表的每个元素。func <$> list= fmap func list= map func list
nimi



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].' ';

如果从0:开始使用range()$step则with的使用可能会更短<?=join(' ',range(0,10*$a=$argv[1],$a));
manatwork's

我做的时候没有设定允许从0开始的规则,但是你是对的。我更新这个。
Crypto

4

J,8个字节

(i.10)&*

这是从乘积函数()09包含(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

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

@manatwork节省了3个字节

显然不需要格式化输出


1
从我的壳里lambda n:" ".join(map(str,range(0,n*11,n)))
借来的

@manatwork我使用Python 3
TuxCrafting

1
您使用Python 3,但可以使用Python 2保存6个字节:lambda n:range(0,11*n,n)
Jonathan Allan

3

Mata,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代表list。另外,是否有可能使x为_n *`i'而不是使用两个变量?我以前从未在STATA中看到过args。感谢您给我展示一些新东西!
bmark's

3

切达 20字节

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

是功能\ o /

我认为这不需要解释,但是如果您想添加一个,请问:)


我应该学习切达干酪。怎么n&(*)办?我假设的(*)意思与哈斯克尔的含义相同,但是&在这种情况下会做什么?
Cyoce's

@Cyoce它正在 粘合
Downgoat

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'9

@ CameronD17啊,在我做出这个回答之后,已经添加了该规则,但是感谢您的提及。我已经删除了
凯文·克鲁伊森

3

JavaScript(ES6),33 31字节

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

这是一个递归解决方案。



3

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

Brachylog,12个字节

,10y:[?]z:*a

在线尝试!

我需要实现 I * [A, B, C] = [I*A, I*B, I*C] ……

说明

,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字节

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

期望输入为单个字节(因为BF只能对不超过255的数字进行运算),并以单个字节的形式返回结果。有些值可能看起来像ASCII,但是不应这样对待;查看返回字节的十进制表示形式。

在线尝试!


您可以通过执行>,[> +> ++> +++> ++++> +++++> ++++++> +++++++> ++++来保存5个字节++++> +++++++++> ++++++++++ [<]>-]> [。>]
Jeff

@Jeff不幸的是,这会中断任何大于25的输入,因为该字节将溢出,重置为0。溢出0s被匹配[<],这使整个过程无限循环。
史蒂文H.

是的,但是字节溢出会导致代码输出错误,不是吗?
杰夫

1
@Jeff他们是正确的输出,他们只是在MOD 255操作系统
史蒂芬H.

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输入并将其乘以vector [1:10]。显示为ans = 2 4 6 ..。也可以在八度使用。

在线尝试


2

PowerShell v2 +,23个字节

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

经由命令行参数获取输入,循环通过范围110,每个环路布置一个号码*$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

Cubix,24字节

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

Cubix是二维的基于堆栈的esolang。Cubix与其他2D lang的不同之处在于,源代码环绕在多维数据集的外部。

在线测试!注意:您必须复制粘贴代码,并且两次迭代之间存在50毫秒的延迟。

说明

解释器要做的第一件事是找出代码将适合的最小立方体。在这种情况下,边长为1。然后用无操作填充代码,.直到所有六个边都填满。在处理之前删除空格,因此此代码与上面的代码相同:

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

这是使用新堆栈选项的一个略短的堆栈I.0.WrN;-!@vrW>r)*O;o
MickyT '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.