รายการและอาร์เรย์ทีละส่วน


14

ในความท้าทายนี้คุณจะได้รับสี่งานที่แตกต่างกัน แต่ค่อนข้างเกี่ยวข้องกับงานที่ต้องแก้ไขในลักษณะเฉพาะ ก่อนอื่นฉันจะอธิบายงานแล้วทำตามคำอธิบายว่าคุณต้องแก้ไขมันอย่างไร

รหัสของคุณควรสำหรับทุกสี่งานใช้เวลาสองจำนวนเต็มบวกเป็น input: ที่n,m n<mงานทั้งหมดจะต้องได้รับการแก้ไขในภาษาเดียวกัน การวางแนวของเมทริกซ์เป็นทางเลือก (n-by-m อาจถูกตีความว่าเป็น "n rows, คอลัมน์ m" หรือ "คอลัมน์ n, แถว m")

ภารกิจที่ 1:

สร้าง (และเอาท์พุท / พิมพ์) เวกเตอร์ / n, n+1 ... m-1, mรายการประกอบด้วยองค์ประกอบ: ดังนั้นสำหรับคุณควรเอาท์พุท:n=4, m=94,5,6,7,8,9

ภารกิจที่ 2:

สร้าง (และเอาท์พุท / พิมพ์) เมทริกซ์ / อาร์เรย์ / รายการของรายการ (หรือเทียบเท่า) ที่มีลักษณะดังนี้:

n,   n+1, ... m-1, m
n+1, n+2, ... m-1, m+1
...
n+m, n+m+1, ... 2*m-1, 2*m

สำหรับn=4, m=9คุณควรส่งออก:

4, 5, 6, 7, 8, 9
5, 6, 7, 8, 9, 10
...
13, 14, 15, 16, 17, 18

ภารกิจ 3:

สร้าง (และเอาท์พุท / พิมพ์) ตารางสูตรคูณ n-by-m (ในรูปแบบที่เหมาะสม) ตัวอย่างสำหรับn=4, m=9:

1   2   3  4
2   4   6  8
3   6   9  12
4   8  12  16
5  10  15  20
6  12  18  24
7  14  21  28
8  16  24  32
9  18  27  36

ภารกิจที่ 4:

เอาท์พุท / พิมพ์เวกเตอร์ / รายการที่ประกอบด้วยองค์ประกอบในตารางการคูณจากงาน 3 เรียงตามลำดับจากน้อยไปมากรักษาค่าที่ซ้ำกัน สำหรับn=4, m=9คุณควรส่งออก: 1, 2, 2, 3, 3, 4, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 12, 12, 12, 14, 15, 16, 16, 18, 18, 20, 21, 24, 24, 27, 28, 32, 36.

ความท้าทาย:

ตอนนี้งานทั้งหมดข้างต้นค่อนข้างเล็กน้อย ความท้าทายที่แท้จริงคือรหัสสำหรับภารกิจ 2 ต้องเริ่มต้นด้วยรหัสสำหรับภารกิจที่ 1 รหัสสำหรับภารกิจที่ 3 ต้องเริ่มต้นด้วยรหัสสำหรับภารกิจที่ 2 และรหัสสำหรับภารกิจที่ 2 จะต้องเริ่มต้นด้วยรหัสสำหรับภารกิจที่ 3

วิธีทำให้ชัดเจนยิ่งขึ้น:

สมมติว่ารหัสสำหรับภารกิจที่ 1คือ (ทำงานในระดับแปดเสียง):

@(n,m)(n:m)

จากนั้นโค้ดสำหรับงาน 2 ของคุณอาจเป็น (ทำงานในระดับแปดเสียง):

@(n,m)(n:m)+(0:m)'

รหัสสำหรับภารกิจที่3จะต้องเป็น (ไม่ทำงานในระดับแปดเสียง):

@(n,m)(n:m)+(0:m)'"Code_for_task_3"

และสุดท้ายรหัสสำหรับภารกิจที่ 4จะต้องเป็น (ไม่ทำงานในระดับแปดเสียง):

@(n,m)(n:m)+(0:m)'"Code_for_task_3""Code_for_task_4"

นี่คือดังนั้นการส่งพร้อมรหัสที่สั้นที่สุดสำหรับภารกิจ 4 ในแต่ละภาษาจะชนะ เช่นเคย: คำอธิบายได้รับการสนับสนุนอย่างมาก


เพียงเพื่อความชัดเจนฉันจะเดาว่านี่เป็นสิ่งที่ขัดต่อจิตวิญญาณของความท้าทาย แต่จะอนุญาตให้เริ่มรหัสงานต่อไปด้วยการเปลี่ยนเส้นทางไปยัง STDERR >2;เพื่อให้รหัสงานก่อนหน้านี้ไม่มีการใช้งานจริงหรือไม่
AdmBorkBork

1
@AdmBorkBork ไม่มีสิ่งดังกล่าวเป็น "จิตวิญญาณแห่งความท้าทาย" ใน PPCG: P ใช่ว่าตกลงของ
Stewie Griffin

ตารางสูตรคูณจำเป็นต้องถูกเสริมด้วยหรือไม่?
HyperNeutrino

1
@HperperNeutrino, no.
Stewie Griffin

เมื่อคุณพูดว่า "จำนวนเต็มบวก" คุณหมายถึง0<n<mหรือ0<=n<m?
หมึกมูลค่า

คำตอบ:


6

เยลลี่ 12 ไบต์

ภารกิจที่ 1

r

ลองออนไลน์!

ภารกิจที่ 2

r+þ0r$}

ลองออนไลน์!

ภารกิจที่ 3

r+þ0r$}
×þ

ลองออนไลน์!

ภารกิจที่ 4

r+þ0r$}
×þFṢ

ลองออนไลน์!

มันทำงานอย่างไร

ภารกิจที่ 1

rเป็นพิสัยของ dyadicและทำสิ่งที่ภารกิจต้องการ

ภารกิจที่ 2

โซ่ dyadic ที่เริ่มต้นด้วยการเชื่อมโยงสาม dyadic เป็นทางแยก ; ลิงก์ภายนอกได้รับการประเมินก่อนจากนั้นลิงก์กลางจะถูกเรียกพร้อมกับผลลัพธ์ทั้งสองด้านเป็นอาร์กิวเมนต์

  • rทำงานเป็นก่อนที่จะยอม[n, ... , M]

  • 0r$} คือ quicklink (หรือ quickquicklink ถ้าคุณต้องการ)

    quick $(monadich chain) ใช้ลิงก์0(ให้ผลตอบแทน0 ) และr(ช่วง dyadic) และเปลี่ยนให้เป็น monadic chain เมื่อเรียกด้วยอาร์กิวเมนต์kสิ่งนี้จะให้ผล[0, …, k]k]

    รวดเร็ว}(อาร์กิวเมนต์ขวา) ใช้เวลา QuickLink ที่สร้างขึ้นโดย$และเปลี่ยนมันเป็นdyadicการเชื่อมโยงที่โทร0r$ด้วย0r$} 's โต้แย้งสิทธิ

    0r$}จะถูกเรียกว่ามีข้อโต้แย้งซ้ายnและขวาอาร์กิวเมนต์เมตรดังนั้น0r$จะ alled กับอาร์กิวเมนต์เมตรและอัตราผลตอบแทน[0, ... , M]

  • เป็นอีกหนึ่งลิงค์ด่วน þ(ตาราง) จะโทร+ (เพิ่ม) สำหรับทุกองค์ประกอบในอาร์กิวเมนต์ซ้ายและองค์ประกอบใด ๆ ในอาร์กิวเมนต์ขวาของมันรวมกลุ่มผลลัพธ์สำหรับแต่ละอาร์กิวเมนต์ที่ถูกต้องไว้ในแถวเดียว

    จะถูกเรียกโดยใช้อาร์กิวเมนต์ซ้าย[n, …, m]และอาร์กิวเมนต์ที่ถูกต้อง[0, …, m]ให้ผลตามตารางที่ต้องการ

ภารกิจที่ 3

ทุกบรรทัดในโปรแกรม Jelly จะกำหนดลิงค์ที่ต่างกัน อันสุดท้ายคือลิงค์หลักและเช่นเดียวกับของ Cmainฟังก์ชั่นคือลิงค์เดียวที่ถูกดำเนินการโดยค่าเริ่มต้น ลิงก์ที่เหลือสามารถเรียกได้จากลิงก์หลัก แต่เราจะไม่ทำสิ่งนี้ที่นี่

ก่อนหน้านี้þ(ตาราง) จะเรียก×(เพิ่ม) สำหรับทุกองค์ประกอบในอาร์กิวเมนต์ซ้ายและองค์ประกอบใด ๆ ในอาร์กิวเมนต์ขวาของมันจัดกลุ่มผลลัพธ์สำหรับแต่ละอาร์กิวเมนต์ที่ถูกต้องไว้ในแถวเดียว

ตั้งแต่การขัดแย้งทั้งสอง×þเป็นจำนวนเต็มþปลดเปลื้องพวกเขาไปช่วงเปลี่ยนข้อโต้แย้งnและม.เข้า[1, ... , n]และ[1, ... , M]

ภารกิจที่ 4

×þทำงานเหมือนก่อน การเชื่อมโยงต่อไปนี้เป็นเอกทำให้พวกเขาatopsคือพวกเขาจะนำไปใช้ที่ด้านบนของคนก่อนหน้านี้

หลังจากดำเนินการ×þแล้วFให้จัดเรียงอาร์เรย์ 2D ที่เป็นผลลัพธ์และจัดเรียงอาร์เรย์ 1D ที่ได้ผลลัพธ์


5

05AB1E , 18 17 ไบต์

ภารกิจที่ 1

Ÿ

ลองออนไลน์

ภารกิจที่ 2

Ÿ²FD>})

ลองออนไลน์

ภารกิจที่ 3

Ÿ²FD>})v¹LN*})¦

ลองออนไลน์

ภารกิจที่ 4

Ÿ²FD>})v¹LN*})¦˜{

ลองออนไลน์

คำอธิบาย

ภารกิจที่ 1

Ÿ     # range[n ... m]

ภารกิจที่ 2

Ÿ        # range[n ... m]
 ²F      # m times do:
   D     # duplicate
    >    # increment
     }   # end loop
      )  # wrap in list

ภารกิจที่ 3

v          # for each list in result of Task 2 do
 ¹L        # push range[1 ... n]
   N*      # multiply by index
     }     # end loop
      )    # wrap in list
       ¦   # discard first element

ภารกิจที่ 4

˜          # flatten the result from Task 3
 {         # sort

3

MATL , 18 17 ไบต์

ภารกิจที่ 1

&:

ลองออนไลน์!

ภารกิจที่ 2

&:O2G:h!+

ลองออนไลน์!

ภารกิจที่ 3

&:O2G:h!+:7M!*

ลองออนไลน์!

ภารกิจที่ 4

&:O2G:h!+:7M!*1eS

ลองออนไลน์!

คำอธิบาย

ภารกิจที่ 1

&:    % Binary range [n n+1 ... m] from implicit inputs n, m

ภารกิจที่ 2

      % ... Stack contains [n n+1 ... m]
O     % Push 0
2G    % Push second input, m
:     % Unary range: gives [1 2 ... m]
h     % Concatenate horizontally: gives [0 1 2 ... m]
!     % Transpose into a column vector
+     % Add with broadcast

ภารกิจที่ 3

      % ... Stack contains matrix from task 2
:     % Unary range. For matrix input it uses its (1,1) entry. So this gives [1 2 ... n]
7M    % Push [1 2 ... m] again
!     % Transpose into a column vector
*     % Multiply with broadcast

ภารกิจที่ 4

      % ... Stack contains matrix from task 3
1e    % Linearize into a row vector
S     % Sort

3

Mathematica, 84 77 ไบต์

แก้ไข: ขอบคุณ Martin Ender สำหรับการบันทึก 7 ไบต์

ภารกิจที่ 1:

{n,m}n~Range~m

เพียวFunctionมีข้อโต้แย้งnและmซึ่งผลในรูปแบบของการมัดn~Range~mRange[n,m]

ภารกิจที่ 2:

{n,m}n~Range~m~Table~(m+1)//0~Range~m+#&

n~Range~m~Table~(m+1)สร้างอาร์เรย์ 2D พร้อมm+1แถวโดยที่แต่ละแถวเป็นผลลัพธ์ของงานก่อนหน้า จากนั้น//0~Range~m+#&เป็นโปรแกรม postfix ของฟังก์ชั่น0~Range~m+#&ที่มีประสิทธิภาพเพิ่ม0ไปยังแถวแรก1แถวที่สองและอื่น ๆ ขึ้นไปmสำหรับm+1แถว -th

ภารกิจ 3:

{n,m}n~Range~m~Table~(m+1)//0~Range~m+#&//1##&~Array~{n,m}&

นี่ใช้ฟังก์ชันคง1##&~Array~{n,m}&ที่กับเอาต์พุตของภารกิจก่อนหน้า

ภารกิจที่ 4:

{n,m}n~Range~m~Table~(m+1)//0~Range~m+#&//1##&~Array~{n,m}&//Flatten//Sort

FlattenและSortตารางสูตรคูณ


2

Python, 183 ไบต์

ภารกิจที่ 1, 29 ไบต์

r=range
a=lambda n,m:r(n,m+1)

ลองออนไลน์!

ภารกิจที่ 2, 84 ไบต์

r=range
a=lambda n,m:r(n,m+1)
s=lambda n,m:[[w+i for w in r(n,m)] for i in a(0,m+1)]

ลองออนไลน์!

งาน 3, 137 ไบต์

r=range
a=lambda n,m:r(n,m+1)
s=lambda n,m:[[w+i for w in r(n,m)] for i in a(0,m+1)]
d=lambda n,m:[[w*i for w in a(1,n)] for i in a(1,m)]

ลองออนไลน์!

ภารกิจที่ 4, 183 167 ไบต์

r=range
a=lambda n,m:r(n,m+1)
s=lambda n,m:[[w+i for w in r(n,m)] for i in a(0,m+1)]
d=lambda n,m:[[w*i for w in a(1,n)] for i in a(1,m)]
f=lambda(z):sorted(sum(z,[]))

ลองออนไลน์!

คำอธิบาย:

ภารกิจที่ 1:

ง่ายพอก็สร้างnไปmรายการโดยใช้ ธ ในตัวrangeฟังก์ชั่น

ภารกิจที่ 2:

สำหรับหมายเลขทุก0การm+1จะเพิ่มตัวเลขที่ให้กับรายการของรายการจากแต่ละที่จะnm

ภารกิจ 3:

สำหรับหมายเลขจากกัน1ไปmก็คูณตัวเลขที่จากจำนวนทุกรายการจากการ1n

ภารกิจที่ 4:

สิ่งนี้ใช้sortedฟังก์ชันที่มีอยู่แล้วของ Python ซึ่งเรียงลำดับรายการจากน้อยไปหามากที่สุด รายการความเข้าใจในฟังก์ชั่นที่ใช้ในการแผ่รายการ มันสร้างรายการของทุกรายการในทุกรายการของรายการที่กำหนดให้โดยงาน 3

  • บันทึกจำนวนมากแล้วต้องขอบคุณ @math_junkie
  • บันทึกแล้ว 16 ไบต์ขอบคุณ @ThisGuy

บันทึกจำนวนมากแล้วต้องขอบคุณ @math_junkie


คุณไม่สามารถใช้ฟังก์ชั่นที่ไม่ระบุชื่อหรือ lambdas ไม่สั้นกว่าจริงหรือ (โดยการนับของฉันดูเหมือนว่าพวกเขาจะเป็น)
โคล

โดยทั่วไปแล้วเป็นสิ่งที่ยอมรับได้สำหรับงูใหญ่หรือไม่? ตัวอย่างเช่นรหัสสำหรับภารกิจ 2 ไม่ใช่โปรแกรมเต็มรูปแบบที่มีอินพุตและเอาต์พุตและยังไม่ใช่ฟังก์ชันหรือนิยามฟังก์ชัน
ngenisis

@ โคลฉันต้องใช้ฟังก์ชั่นที่ไม่ระบุชื่อเพื่อให้ฉันสามารถใช้พวกเขาในรหัสต่อมา
สหาย SparklePony

@ngenisis ฉันคิดว่ามันโอเคเพราะ OP บอกว่ารหัสสำหรับภารกิจ 2 ต้องเริ่มต้นด้วยรหัสสำหรับภารกิจที่ 1 และรหัสสำหรับภารกิจที่ 2 def s(n,m):return [[w+i for w in r(n,m)] for i in a(0,m+1)]เป็นฟังก์ชั่นที่สมบูรณ์เมื่อกำหนดรหัสสำหรับภารกิจที่ 1
สหาย SparklePony

คุณสามารถทำสิ่งที่ชอบa=lambda n,m:...สำหรับคำนิยามฟังก์ชั่นของคุณแต่ละคน ฟังก์ชั่นที่ไม่ระบุชื่อมักจะสั้นลงในไพ ธ อน
คณิตศาสตร์ junkie

2

PHP 7, 200 ไบต์

ใช้บัฟเฟอร์เอาต์พุตเพื่อล้างเอาต์พุตก่อนหน้า

ภารกิจที่ 1

[,$n,$m]=$argv;ob_start();eval($s='echo join(" ",$v?:range($n+$i,$m+$i)),"
";');

บันทึกรหัส$sเพื่อนำมาใช้ซ้ำในภายหลัง $vตัวแปรสำหรับงานที่ผ่านมา

ภารกิจที่ 2

[,$n,$m]=$argv;ob_start();eval($s='echo join(" ",$v?:range($n+$i,$m+$i)),"
";');for(;++$i<=$m;)eval($s);

พิมพ์บรรทัดที่เหลือ

ภารกิจที่ 3

[,$n,$m]=$argv;ob_start();eval($s='echo join(" ",$v?:range($n+$i,$m+$i)),"
";');for(;++$i<=$m;)eval($s);for(($c=ob_clean)();++$j<=$m;print"
")for(;++$$j<=$n;sort($v))echo$v[]=$j*$$j,' ';

$vล้างบัฟเฟอร์ส่งออกและพิมพ์ตารางสูตรคูณประหยัดตัวเลขที่จะ

ภารกิจที่ 4

[,$n,$m]=$argv;ob_start();eval($s='echo join(" ",$v?:range($n+$i,$m+$i)),"
";');for(;++$i<=$m;)eval($s);for(($c=ob_clean)();++$j<=$m;print"
")for(;++$$j<=$n;sort($v))echo$v[]=$j*$$j,' ';$c();eval($s);

$vล้างบัฟเฟอร์ส่งออกอีกครั้งและภาพพิมพ์


1

PowerShellขนาด 126 ไบต์

ภารกิจที่ 1

param($n,$m)$n..$m

ลองออนไลน์!

ใช้..โอเปอเรเตอร์ในตัว พฤติกรรมเริ่มต้นสำหรับการWrite-Outputแทรกนัยขึ้นบรรทัดใหม่ระหว่างองค์ประกอบดังนั้นจึงเป็นเหตุผลว่าทำไมการแสดงผลที่แยกออกเป็นบรรทัดใหม่


ภารกิจที่ 2

param($n,$m)$n..$m>2;0..$m|%{$i=$_;($n..$m|%{$_+$i})-join','}

ลองออนไลน์!

ทิ้งงานแรกที่จะ STDERR ด้วย>2;แล้วลูปจาก0ไป$m, การตั้งค่าแต่ละย้ำผู้ช่วย$iก่อนที่จะวนลูปอีกครั้งจาก$nไปและการเพิ่มจำนวนแต่ละ$m $iสิ่งเหล่านี้จะถูก-joinรวมเข้าด้วยกันด้วยเครื่องหมายจุลภาคมิฉะนั้นนี่จะเป็นผลลัพธ์ขนาดมหึมาต่อหนึ่งบรรทัด


ภารกิจที่ 3

param($n,$m)$n..$m>2;0..$m|%{$i=$_;($n..$m|%{$_+$i})-join','}>2;(1..$m|%{$i=$_;(1..$n|%{$_*$i})-join' '})

ลองออนไลน์!

สิ่งเดียวกันที่>2;จะถ่ายโอนข้อมูลก่อนหน้านี้ไปยัง STDERR แล้วเราเพียงดับเบิลห่วงจาก1ไป$mแล้ว1การ$nตั้งค่าผู้ช่วย$iตามวิธีการคูณค่าและ-joinมีพื้นที่ที่จะทำให้มันแบบตาราง สังเกต parens encapsulating - พวกมันจะเข้ามาเล่นในภารกิจต่อไป - แต่ที่นี่พวกเขาแค่ให้แน่ใจว่าเอาท์พุทใส่ลงไปในไพพ์ไลน์ (ซึ่งมันจะเป็นอยู่


ภารกิจที่ 4

param($n,$m)$n..$m>2;0..$m|%{$i=$_;($n..$m|%{$_+$i})-join','}>2;(1..$m|%{$i=$_;(1..$n|%{$_*$i})-join' '})-split' '|%{+$_}|sort

ลองออนไลน์!

Aha! ในที่สุดความซ้ำซ้อนบางอย่าง ตั้งแต่งานก่อนหน้านี้มี parens เราสามารถตรึงบน-splitในช่องว่างโดยไม่ต้องกังวลหล่อแต่ละคนเป็นจำนวนเต็มแล้ว|%{+$_} |sortการส่งออกเป็นบรรทัดขึ้นบรรทัดใหม่อีกครั้งแยกจากกัน


ฉันคิดว่ามีวิธีบางวิธีที่จะใช้ประโยชน์จากความซ้ำซ้อนระหว่างงานได้ดีขึ้น - ยังคงเล่นกอล์ฟอยู่บ้าง


1

ES2016-ish, 401 384 ตัวอักษร

นี่เป็นความพยายามครั้งแรก ฉันแน่ใจว่ามันอาจจะข้นนิดหน่อย แต่มันค่อนข้างสั้น ฟังก์ชั่น Arrow FTW! (รักข้อความสั่งคืนเหล่านั้นโดยปริยาย) ใหม่และปรับปรุงด้วยสตริงแม่แบบ

ภารกิจที่ 1

var a=Array,l=console.log,f=(n,m)=>a.from(a(1+m-n),(w,i)=>n+i),z=(n,m)=>l(f(n,m).join`, `)

โทรz(n,m)ออกบันทึก (ฉันใช้นามแฝง console.log สำหรับการเล่นกอล์ฟในภายหลัง)

ภารกิจที่ 2

ข้อที่สอง ... ขยายในครั้งแรก

var a=Array,l=console.log,f=(n,m)=>a.from(a(1+m-n),(w,i)=>n+i),z=(n,m)=>l(f(n,m).join`, `),p,o,g=(n,m)=>{p=n,o=m;return [...a(m+1).keys()].map((d)=>f(d+p,d+o))},y=(n,m)=>l(g(n,m).join`\n`

y(n,m)ตอนนี้เรียก น่ารักใช่มั้ย

ภารกิจที่ 3

<sadface />ต้องบายพาสที่สุดของการทำงานที่มีอยู่

var a=Array,l=console.log,f=(n,m)=>a.from(a(1+m-n),(w,i)=>n+i),z=(n,m)=>l(f(n,m).join`, `),p,o,g=(n,m)=>{p=n,o=m;return [...a(m+1).keys()].map((d)=>f(d+p,d+o))},y=(n,m)=>l(g(n,m).join`\n`,h=(n,m)=>[...a(m).keys()].map((d)=>(d+1)*n).join`\t`,i=(n,m)=>[...a(n).keys()].map((d)=>h((d+1),m)),v=(n,m)=>i(n,m).join`\n`

vตอนนี้ชื่อวิธีคือ เรียกว่าเป็นวิธีเดียวกัน

ภารกิจที่ 4

และตอนนี้เราสามารถนำกลับมาใช้ใหม่ได้อีกครั้ง

var a=Array,l=console.log,f=(n,m)=>a.from(a(1+m-n),(w,i)=>n+i),z=(n,m)=>l(f(n,m).join`, `),p,o,g=(n,m)=>{p=n,o=m;return [...a(m+1).keys()].map((d)=>f(d+p,d+o))},y=(n,m)=>l(g(n,m).join`\n`,h=(n,m)=>[...a(m).keys()].map((d)=>(d+1)*n).join`\t`,i=(n,m)=>[...a(n).keys()].map((d)=>h((d+1),m)),v=(n,m)=>i(n,m).join`\n`,t=(n,m)=>l(v(n,m).match(/\d+/g).sort((a,b)=>+a>+b||+(a===b)*2-1).join(`, `)

ต้องข้ามสำหรับวิธีการของฉันจึงเป็นu tBummed ที่ฉันต้องใส่ในฟังก์ชั่นการเรียงลำดับนั้นเพราะString.matchผลตอบแทนที่ได้เป็น ... สตริง


0

Ruby, 121 103 ไบต์

ทุกอย่างในทับทิม truthy ยกเว้นnilและfalseซึ่งหมายความว่างานที่สามารถตั้งค่าที่จะละเว้นการป้อนข้อมูลก่อนหน้านี้ด้วยความล้มเหลว แต่ดีอยู่/and&&

ภารกิจที่ 1

ลองออนไลน์!

n,m=$*.map &:to_i
p [*n..m]

ภารกิจที่ 2

ลองออนไลน์!

n,m=$*.map &:to_i
p [*n..m]&&(0..m).map{|i|[*n+i..m+i]}

ภารกิจที่ 3

ลองออนไลน์!

n,m=$*.map &:to_i
p [*n..m]&&(0..m).map{|i|[*n+i..m+i]}&&(1..m).map{|i|(1..n).map{|j|i*j}}

ภารกิจที่ 4

ลองออนไลน์!

n,m=$*.map &:to_i
p [*n..m]&&(0..m).map{|i|[*n+i..m+i]}&&(1..m).map{|i|(1..n).map{|j|i*j}}.flatten.sort
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.