พิมพ์ตารางการคูณด้วยอินพุต


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) เป็นต้นนอกจากนี้Sandbox สำหรับความท้าทายที่เสนอเป็นสถานที่ที่ดีในการโพสต์ครั้งแรกเพื่อความท้าทายที่สมบูรณ์แบบ
Kevin Cruijssen

ภายใต้กฎ 3 ผลลัพธ์ควรCเป็นอย่างไร แล้วไงZล่ะ
ลินน์

1
อะไรคือผลลัพธ์กฎปกติมีแนวโน้มที่จะอนุญาตให้ฟังก์ชันส่งคืนเอาต์พุตเป็นรายการแทนที่จะพิมพ์ลงใน STDOUT
Brad Gilbert 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+" ");
    }
}

ขอบคุณ Jonathan Allan ยังไม่สามารถเพิ่มความคิดเห็น และขอบคุณ Kevin Cruijssen ฉันคิดว่าฉันจะต้องรวมโปรแกรมทั้งหมดไว้เสมอยกเว้นว่ามีการระบุคำถามว่าอนุญาตตัวอย่างข้อมูล ฉันจะสามารถออกจากระบบได้หรือไม่ เรียกให้พิมพ์ไปที่คอนโซลในกรณีนี้หรือจำเป็นต้องใช้ / นำเข้าหรือไม่


1
ยินดีต้อนรับสู่ PPCG! คุณสามารถลบคลาสออกได้เฉพาะหน้าที่หลักเท่านั้นโดยกฎการเล่นกอล์ฟ :)
Jonathan Allan

1
@JanathanAllan ไม่เพียงแค่นั้น แต่ตามกฎเดียวกันนั้นคุณยังสามารถสร้างวิธีการแยกต่างหากโดยไม่ต้องMainทั้งหมด เช่นvoid f(int n){for(int i=0;i++<10;){System.Console.Write(i*n+" ");}}และแน่นอนยินดีต้อนรับสู่ PPCG!
Kevin Cruijssen


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)

ฉันชอบที่จะเรียนรู้เยลลี่ แต่ครึ่งคำสั่งไม่ได้ทำให้ฉันดังนั้นมันจึงไร้ประโยชน์: D
Beta Decay

@BetaDecay ฉันไม่สามารถพิมพ์ส่วนใหญ่ของพวกเขาและพวกเขาไม่ได้ทำให้ฉันในโปรแกรมแก้ไขข้อความใด ๆ หรือบนบรรทัด cmd ของฉัน :( - พวกเขาแสดงผลดีใน Firefox บนเครื่องที่ใช้ Windows 7 ของฉัน
Jonathan Allan

คุณและ Emigma กำลังชนะ
Rizze

@BetaDecay - มันช่วยให้คุณสามารถดาวน์โหลดและติดตั้งฟอนต์ DejaVu Sans Mono (ตอนนี้ฉันสามารถเห็นตัวละครเกือบทุกตัวใน notepad ++ และ TIO ผ่าน Firefox ตอนนี้ก็ใช้แล้วเช่นกันและแสดงตัวละครทุกตัว)
Jonathan Allan

สิ่งที่ฉันคิดอย่างแน่นอน +1
Erik the Outgolfer

8

Clojure, 70 80ไบต์

นี่คือการโพสต์ครั้งแรกของฉันใน CG ฉันหวังว่าการป้อนข้อมูลเป็น OK:

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

@Dada: ใช่ conflated กับรุ่นอื่น คงที่
Ton Hospel

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: <$>เป็นรุ่น infix ของfmap(หรือmapเมื่อใช้กับรายการ) นั่นคือมันใช้ฟังก์ชั่นที่กำหนดเนื่องจากเป็นอาร์กิวเมนต์ที่ 1 ขององค์ประกอบทุกรายการ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].' ';

หนึ่งใช้range()กับ$stepสามารถจะสั้นถ้าคุณเริ่มต้นจาก <?=join(' ',range(0,10*$a=$argv[1],$a));0:
จัดการ

กฎที่อนุญาตให้เริ่มต้นจาก 0 ไม่ได้ตั้งไว้เมื่อฉันทำ แต่คุณพูดถูก ฉันอัปเดตอันนี้
Crypto

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

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

บันทึก 3 ไบต์ด้วย @manatwork

การจัดรูปแบบผลลัพธ์ไม่ชัดเจน


1
ยืมจากคำตอบเชลล์ของฉัน:lambda n:" ".join(map(str,range(0,n*11,n)))
จัดการ

@ การจัดการฉันใช้ Python 3
TuxCrafting

1
คุณใช้ Python 3 แต่คุณสามารถบันทึกได้ 6 ไบต์โดยใช้ Python 2:lambda n:range(0,11*n,n)
Jonathan Allan

3

Mata, 15 29 Bytes

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
การป้อนข้อมูลเป็นอย่างไร จำเป็นต้องนำมาใช้ซ้ำได้เช่นกัน
Jonathan Allan

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 เป็น _n * `i 'แทนที่จะใช้ตัวแปรสองตัว? ฉันไม่เคยเห็น args มาก่อนใน STATA ขอบคุณที่แสดงให้ฉันเห็นสิ่งใหม่!
bmarks

3

Cheddar , 20 ไบต์

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

Yay สำหรับการทำงาน \ o /

ฉันไม่คิดว่านี่เป็นคำอธิบายที่ต้องการ แต่ถ้าคุณต้องการให้ฉันเพิ่มเข้าไปขอให้ :)


ฉันควรเรียนรู้ Cheddar แล้วจะn&(*)ทำอย่างไร? ฉันสมมติว่า(*)หมายถึงสิ่งเดียวกันนั่นหมายความว่าฉันมีเคลล์ แต่สิ่งที่จะ&ทำในบริบทนั้น
Cyoce

@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

@ CameronD17 อ่ากฎนั้นได้รับการเพิ่มหลังจากที่ฉันได้ทำคำตอบนี้ แต่ขอบคุณที่พูดถึง ฉันลบมันแล้ว
Kevin Cruijssen

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

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

*** สมอง 84 ไบต์

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

คาดว่าอินพุตเป็นไบต์เดียว (เนื่องจาก BF สามารถทำงานกับตัวเลขสูงสุด 255 เท่านั้น) และส่งกลับผลลัพธ์เป็นไบต์เดียว ค่าบางอย่างอาจมีลักษณะคล้าย ASCII แต่ไม่ควรถือว่าเป็นเช่นนั้น ดูการแทนทศนิยมของไบต์ที่ส่งคืน

ลองออนไลน์!


คุณสามารถบันทึกได้ 5 ไบต์โดยทำ>, [> +> ++> +++> +++++> ++++++> +++++++> +++++++> ++++ ++++> +++++++++> ++++++++++ [<]> -]> [.>]
Jeff

@Jeff น่าเสียดายที่แบ่งอินพุตใด ๆ ที่สูงกว่า 25 เพราะไบต์จะล้น, รีเซ็ตเป็น 0 การโอเวอร์โฟลว์ถูก0จับคู่ด้วย[<]ซึ่งทำให้กระบวนการทั้งหมดวนซ้ำไม่สิ้นสุด
Steven H.

ถูกต้อง แต่ไบต์ที่มากเกินไปทำให้เกิดผลลัพธ์ที่ไม่ถูกต้องพร้อมรหัสของคุณใช่ไหม
Jeff

1
@Jeff พวกเขากำลังออกที่ถูกต้องพวกเขาเพียงแค่ทำงานใน mod 255
สตีเฟนเอช

2

JavaScript ขนาด 42 ไบต์

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

ฉันไม่รู้ JS มากคุณสามารถย้ายส่วนเพิ่มไปยังส่วนทดสอบของ for หรือไม่
Jonathan Allan

ฉันแก้ไขมัน เรียบร้อยแล้วเป็นปกติดีแล้ว.
Rizze

มันแจ้งเตือนทันทีด้วยการแจ้งเตือน ()
Rizze

มันเป็นการเตือนสำหรับฉันโดยไม่ต้องแจ้งเตือน: ที่นี่ - ฉันกลับมาแล้วต้องคลิก "เรียกใช้" ไม่ใช่แค่ "ลอง" เพื่อโหลดซ้ำ
Jonathan Allan

1
@JanathanAllan อะไรนะ?
Rizze

2

MATLAB 12 ไบต์

@(x)x*[1:10]

ไม่มากไปจริงๆ ฟังก์ชั่นที่ไม่ระบุชื่อที่จะใช้xเป็น input [1:10]และคูณได้โดยเวกเตอร์ ans = 2 4 6 ..จอแสดงผลเป็น ยังทำงานในระดับแปดเสียง

ลองมันออนไลน์


2

PowerShell v2 +, 23 ไบต์

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

รับอินพุตผ่านอาร์กิวเมนต์บรรทัดรับคำสั่งวนรอบช่วง1เพื่อให้10แต่ละวงวนวางหมายเลขนั้น*$nบนไพพ์ไลน์ เอาต์พุตโดยนัยWrite-Outputเมื่อสิ้นสุดการประมวลผลโปรแกรมจะมีค่าคั่นด้วย newline

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

2

Cubix , 24 ไบต์

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

Cubix เป็น esolang 2 มิติแบบกองซ้อน Cubix นั้นแตกต่างจาก langings 2D อื่น ๆ ซึ่งซอร์สโค้ดจะถูกล้อมรอบด้านนอกของ cube

ทดสอบออนไลน์! หมายเหตุ: คุณจะต้องคัดลอกโค้ดและมีความล่าช้า 50 ms ระหว่างการทำซ้ำ

คำอธิบาย

สิ่งแรกที่ล่ามทำคือหาคิวบ์ที่เล็กที่สุดที่โค้ดจะพอดี ในกรณีนี้ความยาวของขอบคือ 1 จากนั้นโค้ดจะถูกเติมด้วยไม่มีการเติม.จนกว่าทั้งหกด้านจะเต็ม ช่องว่างถูกลบออกก่อนการประมวลผลดังนั้นรหัสนี้จะเหมือนกับข้างต้น:

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

นี่คือตัวย่อที่สั้นกว่าเล็กน้อยโดยใช้ตัวเลือกสแต็คใหม่I.0.WrN;-!@vrW>r)*O;o
MickyT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.