จัดเรียงตัวเลขที่ไม่ซ้ำกันในตารางการคูณ


30

ความท้าทายง่ายๆวันนี้:

เขียนโปรแกรมหรือฟังก์ชั่นที่รับจำนวนเต็มบวก N แล้วพิมพ์หรือส่งกลับรายการเรียงลำดับของตัวเลขเฉพาะที่ปรากฏในตารางสูตรคูณซึ่งแถวและคอลัมน์ทวีคูณทั้งช่วงจาก 1 ถึง N รวม

รายการอาจเรียงลำดับจากน้อยไปหามาก (น้อยไปหามากที่สุด) หรือเรียงจากมากไปหาน้อย (มากที่สุดไปหาน้อยที่สุด) และอาจถูกเรียงลำดับในรูปแบบที่เหมาะสม

รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

ตัวอย่าง

เมื่อ N = 4 ตารางสูตรคูณจะมีลักษณะดังนี้:

   1  2  3  4
  -----------
1| 1  2  3  4
 |
2| 2  4  6  8
 |
3| 3  6  9 12
 |
4| 4  8 12 16

1, 2, 3, 4, 6, 8, 9, 12, 16หมายเลขที่ไม่ซ้ำกันในตารางที่มี สิ่งเหล่านี้ถูกเรียงลำดับแล้วดังนั้น

1, 2, 3, 4, 6, 8, 9, 12, 16

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

[16,12,9,8,6,4,3,2,1]
1
2
3
4
6
8
9
12
16
16 12 9 8 4 3 2 1

กรณีทดสอบ

N=1 -> [1]
N=2 -> [1, 2, 4]
N=3 -> [1, 2, 3, 4, 6, 9]
N=4 -> [1, 2, 3, 4, 6, 8, 9, 12, 16]
N=5 -> [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 20, 25]
N=6 -> [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 30, 36]
N=7 -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 28, 30, 35, 36, 42, 49]
N=8 -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 28, 30, 32, 35, 36, 40, 42, 48, 49, 56, 64]
N=9 -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 54, 56, 63, 64, 72, 81]
N=10 -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72, 80, 81, 90, 100]
N=11 -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 27, 28, 30, 32, 33, 35, 36, 40, 42, 44, 45, 48, 49, 50, 54, 55, 56, 60, 63, 64, 66, 70, 72, 77, 80, 81, 88, 90, 99, 100, 110, 121]
N=12 -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 27, 28, 30, 32, 33, 35, 36, 40, 42, 44, 45, 48, 49, 50, 54, 55, 56, 60, 63, 64, 66, 70, 72, 77, 80, 81, 84, 88, 90, 96, 99, 100, 108, 110, 120, 121, 132, 144]

ดังนั้นโดยทั่วไปแล้วโค้ดส่งคืนรายการตัวเลขในตารางสูตรคูณที่ระบุโดย N ยกเว้นตัวเลขใด ๆ ที่ไม่สามารถทำซ้ำได้?
TanMath

N มีขนาดใหญ่แค่ไหน?
xsot

1
@xsot คุณสามารถสมมติว่า N * N จะน้อยกว่าค่า int ปกติสูงสุดของภาษาของคุณ (อาจเป็น 2 ^ 31-1)
งานอดิเรกของ Calvin

โดยพื้นฐานแล้วนี่คือ 1-n และไม่ใช่เฉพาะช่วงเวลาถึง n ^ 2
gregsdennis

1
@gregsdennis ไม่พบมีคอมโพสิตมากมายอยู่ เช่น 91, 92, 93, 94, 95, 96 สำหรับ N = 10
งานอดิเรกของ Calvin

คำตอบ:


12

Pyth, 8 ไบต์

S{*M^SQ2

ลองออนไลน์

คำอธิบาย: SQใช้เวลาการป้อนข้อมูลรายการประเมิน ( Q) [1, 2, ..., Q]และทำให้รายการ ^SQ2ใช้ผลิตภัณฑ์คาร์ทีเซียนของรายการนั้นด้วยตัวเอง - การรวมกันของผลิตภัณฑ์ที่เป็นไปได้ทั้งหมด *Mทวีคูณคู่เหล่านี้ทั้งหมดเข้าด้วยกันเพื่อสร้างผลลัพธ์ที่เป็นไปได้ทั้งหมดในตารางการคูณและS{ทำให้เป็นเอกลักษณ์และเรียงลำดับ


@FryAmTheEggman Input 5 ต้องการเรียงลำดับอยู่แล้วไม่เช่นนั้น 10 และ 9 ในเอาต์พุตจะไม่เป็นระเบียบ
Reto Koradi

เก็บยี้บนลืมเกี่ยวกับ splatting Mว่า +1
Maltysen

13

Python 2, 61 51 ไบต์

lambda n:sorted({~(i%n)*~(i/n)for i in range(n*n)})

ขอบคุณ xnor ที่ย่อไวยากรณ์บางส่วนให้สั้นลง


1
ก็สามารถเป็นชุดคอมพ์set(...) {...}นอกจากนี้ยังอนุญาตให้ใช้งานได้ตามค่าเริ่มต้นที่นี่ดังนั้นคุณจึงสามารถเขียนlambda n:...ได้
xnor

ขอบคุณที่เตือนฉันเกี่ยวกับชุดความเข้าใจฉันลืมมันโดยสิ้นเชิง
xsot

ฉันไม่สามารถดูวิธีที่ดีกว่าการทำเช่นนี้ดีที่สุดที่ฉันเห็นกับการเรียกซ้ำ f=lambda n:n*[0]and sorted(set(range(n,n*n+n,n)+f(n-1)))56:
xnor

11

APL, 18 16 ไบต์

{y[⍋y←∪,∘.×⍨⍳⍵]}

นี่คือฟังก์ชัน monadic ที่ไม่มีชื่อ เอาต์พุตอยู่ในลำดับจากน้อยไปหามาก

คำอธิบาย:

             ⍳⍵]}   ⍝ Get the integers from 1 to the input
         ∘.×⍨       ⍝ Compute the outer product of this with itself
        ,           ⍝ Flatten into an array
       ∪            ⍝ Select unique elements
     y←             ⍝ Assign to y
 {y[⍋               ⍝ Sort ascending

แก้ไขปัญหาและบันทึก 2 ไบต์ด้วย Thomas Kwa!


7

CJam, 14 12 ไบต์

รุ่นล่าสุดพร้อมการปรับปรุงที่เสนอโดย @aditsu:

{)2m*::*0^$}

นี่คือฟังก์ชั่นที่ไม่ระบุชื่อ ลองออนไลน์ด้วยรหัสอินพุต / เอาต์พุตที่จำเป็นสำหรับการทดสอบ

@ มาร์ตินเสนออีกทางออกที่สวยงามมาก ( {,:)_ff*:|$}) ด้วยความยาวเท่ากัน ฉันใช้อันนี้โดย aditsu เพราะมันคล้ายกับโซลูชันดั้งเดิมของฉันมากกว่า

ข้อแตกต่างที่สำคัญสำหรับโซลูชันดั้งเดิมของฉันคือสิ่งนี้จะช่วยรักษา0ค่าในลำดับดั้งเดิมซึ่งจะช่วยประหยัด 2 ไบต์เมื่อเริ่มต้น คุณคิดว่าจะไม่ช่วยได้เพราะคุณต้องลบ0ค่าออกจากผลลัพธ์ แต่ความคิดหลักของ @ aditsu คือความคิด0^ในตอนท้ายซึ่งแตกต่าง0อย่างมากกับ สิ่งนี้จะลบ0และในเวลาเดียวกันเนื่องจากเป็นการดำเนินการชุดจึงกำจัดองค์ประกอบที่ซ้ำกันออกจากชุดโซลูชัน เนื่องจากฉันต้องการ 2 ไบต์เพื่อกำจัดรายการที่ซ้ำกันก่อนหน้านี้ให้ลบ0จึงไม่มีค่าใช้จ่าย

คำอธิบาย:

{     Start anonymous function.
  )     Increment to get N+1.
  2m*   Cartesian power, to get all pairs of numbers in range [0, N].
  ::*   Reduce all pairs with multiplication.
  0^    Remove 0, and remove duplicates at the same time since this is a set operation.
  $     Sort the list.
}     End anonymous function.

สำหรับระยะเวลาเดียวกัน{2m*::)::*_&$},{)2m*::*_&$0-}
ปีเตอร์เทย์เลอร์

2
วิธีการเกี่ยวกับนี้สำหรับสองไบต์น้อย :){,:)_ff*:|$}
มาร์ตินเอนเดอร์

1
วิธีอื่น:{)2m*::*0^$}
aditsu


4

จูเลีย 24 ไบต์

n->sort(∪((x=1:n)*x'))

นี่คือฟังก์ชั่นที่ไม่ระบุชื่อที่ยอมรับจำนวนเต็มและส่งกลับอาร์เรย์จำนวนเต็ม

Ungolfed:

function f(n::Integer)
    # Construct a UnitRange from 1 to the input
    x = 1:n

    # Compute the outer product of x with itself
    o = x * transpose(x)

    # Get the unique elements, implicitly flattening
    # columnwise into an array
    u = unique(o)

    # Return the sorted output
    return sort(u)
end

4

MATLAB, 24 ไบต์

@(n)unique((1:n)'*(1:n))

สิ่งที่ดี! ในไม่ช้ามันจะเป็นไปได้ที่จะทำใน 7 หรือ 8 ไบต์ ... :-)
Luis Mendo

ดีมาก! :-)
Stewie Griffin

@ คุณเคยลองอันนี้ใน MATL ไหม?
Stewie Griffin

ตอนนี้ฉันไม่มีเวลามากพอที่จะอ่านความท้าทายทั้งหมด แต่เมื่อมองดูรหัส Matlab ของคุณดูเหมือนว่าจะสามารถทำได้ด้วย MATL
Luis Mendo

4

zsh, 86 56 ไบต์

ขอบคุณ @Dennis สำหรับการบันทึก 30 (!) ไบต์

(for a in {1..$1};for b in {1..$1};echo $[a*b])|sort -nu

คำอธิบาย / ungolfed:

(                      # begin subshell
  for a in {1..$1}     # loop through every pair of multiplicands
    for b in {1..$1}
      echo $[a*b]      # calculate a * b, output to stdout
) | sort -nu           # pipe output of subshell to `sort -nu', sorting
                       # numerically (-n) and removing duplicates (-u for uniq)

สิ่งนี้ไม่สามารถใช้งานได้ใน Bash เพราะ Bash ไม่ได้ขยายออก{1..$1}- เพียงแค่ตีความมันอย่างแท้จริง (ดังนั้นa=5; echo {1..$a}ผลลัพธ์{1..5}แทน1 2 3 4 5)


ฉันรอคำตอบ * sh : D
Addison Crump

1
เคล็ดลับทุบตีที่เกี่ยวข้อง ดูเหมือนว่าจะนำไปใช้กับเปลือก Z เช่นกัน
Dennis


4

Ruby, 50 48 ไบต์

->n{c=*r=1..n;r.map{|i|c|=r.map{|j|i*j}};c.sort}

Ungolfed:

->n {
  c=*r=1..n
  r.map { |i| c|=r.map{|j|i*j} }
  c.sort
}

การใช้การวนซ้ำแบบวนซ้ำเพื่อคูณแต่ละจำนวนด้วยตัวเลขอื่น ๆ ไม่เกิน n แล้วเรียงลำดับอาร์เรย์

50 ไบต์

->n{r=1..n;r.flat_map{|i|r.map{|j|i*j}}.uniq.sort}

การใช้งาน:

->n{c=*r=1..n;r.map{|i|c|=r.map{|j|i*j}};c.sort}[4]
=> [1, 2, 3, 4, 6, 8, 9, 12, 16]

3

R, 39 ไบต์

cat(unique(sort(outer(n<-1:scan(),n))))

สิ่งนี้อ่านจำนวนเต็มจาก STDIN และเขียนรายการที่คั่นด้วยช่องว่างไปยัง STDOUT

เราสร้างตารางสูตรคูณเป็นเมทริกซ์ที่ใช้outerโดยปริยายแผ่เป็นเวกเตอร์และการเรียงลำดับการใช้sortให้เลือกใช้องค์ประกอบที่ไม่ซ้ำและพื้นที่การพิมพ์โดยใช้คั่นuniquecat




2

K, 17 ไบต์

t@<t:?,/t*\:t:1+!

ไม่มากที่จะพูดที่นี่ จัดเรียง ( t@<t:) รายการที่ไม่ซ้ำกัน ( ?) ของแบน,/ตัวเอง( ) คูณด้วยตนเองผลิตภัณฑ์คาร์ทีเซียน ( t*\:t:) จาก 1 ถึงและรวมถึง N ( 1+!)

ในการดำเนินการ:

  t@<t:?,/t*\:t:1+!5
1 2 3 4 5 6 8 9 10 12 15 16 20 25

2

Haskell, 55 54 ไบต์

import Data.List
f n=sort$nub[x*y|x<-[1..n],y<-[1..x]]

ตัวอย่างการใช้งาน: ->f 4[1,2,3,4,6,8,9,12,16]

nub ลบองค์ประกอบที่ซ้ำกันออกจากรายการ

แก้ไข: @Zgarb $พบฟุ่มเฟือย


2

J, 21 20 ไบต์

ขอบคุณ @Zgarb สำหรับ -1 ไบต์!

/:~@~.@,@(1*/~@:+i.)

J คำตอบแรกของฉัน! เคล็ดลับการเล่นกอล์ฟได้รับการชื่นชมหากมีบางสิ่งที่จะเล่นกอล์ฟ

นี่คือฟังก์ชั่น monadic; เราใช้ผลิตภัณฑ์ด้านนอกโดยการคูณของรายการ1..inputด้วยตัวเองแผ่แบนใช้องค์ประกอบที่ไม่ซ้ำกันและเรียงลำดับ


2

Kotlin, 70 ไบต์

val a={i:Int->(1..i).flatMap{(1..i).map{j->it*j}}.distinct().sorted()}

เวอร์ชันที่ไม่ถูกปรับแต่ง:

val a: (Int) -> List<Int> = { 
    i -> (1..i).flatMap{ j -> (1..i).map{ k -> j * k } }.distinct().sorted()
}

ทดสอบด้วย:

fun main(args: Array<String>) {
    for(i in 1..12) {
        println(a(i))
    }
}

2

เชลล์ + ยูทิลิตี้ทั่วไป, 41

seq -f"seq -f%g*%%g $1" $1|sh|bc|sort -nu

หรืออีกทางหนึ่ง:

Bash + coreutils, 48

eval printf '%s\\n' \$[{1..$1}*{1..$1}]|sort -nu

สร้างการขยายรั้งภายในการขยายเลขคณิต:

\$[{1..n}*{1..n}]ขยายไปสู่การขยายการทางคณิตศาสตร์$[1*1] $[1*2] ... $[1*n] ... $[n*n]ซึ่งมีการประเมินและส่งผ่านไปยังที่พิมพ์ต่อหนึ่งบรรทัดซึ่งเป็นประปาprintfsort

ใช้คำพูดอย่างระมัดระวังหนีออกมาและevalให้แน่ใจว่าการขยายเกิดขึ้นในลำดับที่ต้องการ


หรืออีกทางหนึ่ง:

Pure Bash, 60

eval a=($(eval echo [\$[{1..$1}*{1..$1}\]]=1))
echo ${!a[@]}


1

Minkolang 0.14 , 25 22 18 ไบต์

ผมจำได้ว่าผมอย่างสะดวกนำมาใช้ผลิตภัณฑ์คาร์ทีเซียนก่อนคำถามนี้ถูกโพสต์ !

1nLI20P[x*1R]sS$N.

ลองที่นี่ (เอาต์พุตในลำดับย้อนกลับ)

คำอธิบาย

1                     Push a 1 onto the stack
 n                    Take number from input (n)
  L                   Pushes 1,2,...,n onto the stack
   I                  Pushes length of stack so 0P knows how many items to pop
    2                 Pushes 2 (the number of repeats)
     0P               Essentially does itertools.product(range(1,n+1), 2)
       [              Open for loop that repeats n^2 times (0P puts this on the stack)
        x             Dump (I know each product has exactly two numbers
         *            Multiply
          1R          Rotate 1 step to the right
            ]         Close for loop
             s        Sort
              S       Remove duplicates ("set")
               $N.    Output whole stack as numbers and stop.

1

JavaScript (ES6), 92 90 ไบต์

n=>eval(`for(r=[],a=n;a;a--)for(b=n;b;)~r.indexOf(x=a*b--)||r.push(x);r.sort((a,b)=>a-b)`)

คำอธิบาย

n=>eval(`                 // use eval to remove need for return keyword
  for(r=[],a=n;a;a--)     // iterate for each number a
    for(b=n;b;)           // iterate for each number b
      ~r.indexOf(x=a*b--) // check if it is already in the list, x = value
      ||r.push(x);        // add the result
  r.sort((a,b)=>a-b)      // sort the results by ascending value
                          // implicit: return r
`)

ทดสอบ

N = <input type="number" oninput="result.innerHTML=(

n=>eval(`for(r=[],a=n;a;a--)for(b=n;b;)~r.indexOf(x=a*b--)||r.push(x);r.sort((a,b)=>a-b)`)

)(+this.value)" /><pre id="result"></pre>


1

Perl 6 , 27 ไบต์

{squish sort 1..$_ X*1..$_} # 27
{unique sort 1..$_ X*1..$_} # 27
{sort unique 1..$_ X*1..$_} # 27

ตัวอย่างการใช้งาน:

say {squish sort 1..$_ X*1..$_}(3); # (1 2 3 4 6 9)␤

my $code = {squish sort 1..$_ X*1..$_}

for 1..100 -> \N { say $code(N) }

my &code = $code;

say code 4; # (1 2 3 4 6 8 9 12 16)␤

1

Haskell, 51 ไบต์

f n=[i|i<-[1..n*n],elem i[a*b|a<-[1..n],b<-[1..n]]]

ค่อนข้างน่าเบื่อ. เพียงแค่กรองรายการ[1..n*n]กับองค์ประกอบของแบบฟอร์มa*bด้วยaและในb [1..n]การใช้filterให้ความยาวเท่ากัน

f n=filter(`elem`[a*b|a<-[1..n],b<-[1..n]])[1..n*n]

ฉันพยายามสักครู่เพื่อสร้างรายการผลิตภัณฑ์ด้วยสิ่งที่ฉลาดกว่าconcatMapหรือคล้ายmapMแต่ได้ผลลัพธ์ที่ยาวกว่าเท่านั้น การตรวจสอบสมาชิกภาพที่ซับซ้อนยิ่งขึ้นมาที่ 52 ไบต์นานกว่า 1 ไบต์ แต่อาจสั้นลงได้

f n=[k|k<-[1..n*n],any(\a->k`mod`a<1&&k<=n*a)[1..n]]

คุณสามารถบันทึก 3 ไบต์โดยใช้(*)<$>..<*>..เช่นนี้
ბიმო

1

JAVA - 86 ไบต์

Set a(int a){Set s=new TreeSet();for(;a>0;a--)for(int b=a;b>0;)s.add(a*b--);return s;}

Ungolfed

Set a(int a){
    Set s = new TreeSet();
    for (;a>0;a--){
        for(int b = a;b>0;){
            s.add(a*b--);
        }
    }
    return s;
}


1

PHP, 74,73 70 ไบต์

while($i++<$j=$n)while($j)$a[]=$i*$j--;$a=array_unique($a);sort($a);

print_r($a); // Not counted, but to verify the result

Ungolfed:

while($i++<$j=$n)
    while($j)
        $a[]=$i*$j--;

ก่อนหน้านี้:

while(($j=$i++)<$n)for(;$j++<$n;)$a[]=$i*$j;$a=array_unique($a);sort($a);

ไม่แน่ใจ 100% ว่าจะทำอย่างไรกับผลลัพธ์ แต่$aมีอาร์เรย์ที่มีตัวเลขที่เกี่ยวข้อง $nคือจำนวนที่สิบเอ็ดผ่าน$_GET['n']ด้วยregister_globals=1


1

TeaScript , 37 35 ตัวอักษร; 40 ไบต์

บันทึก 2 ไบต์ขอบคุณ @Downgoat

TeaScript เป็น JavaScript สำหรับเล่นกอล์ฟ

(b+r(1,+x¬)ßam(z=>z*l±s`,`.u¡s»l-i)

ลองออนไลน์!

Ungolfed และคำอธิบาย

(b+r(1,+x+1)m(#am(z=>z*l)))s(',').u()s(#l-i)
              // Implicit: x = input number
r(1,+x+1)     // Generate a range of integers from 1 to x.
m(#           // Map each item "l" in this range "a" to:
 am(z=>       //  a, with each item "z" mapped to
  z*l))       //   z * l.
(b+      )    // Parse this as a string by adding it to an empty string.
s(',')        // Split the string at commas, flattening the list.
.u()          // Take only the unique items from the result.
s(#l-i)       // Sort by subtraction; the default sort sorts 10, 12, 100, etc. before 2.
              // Implicit: output last expression

คุณสามารถใช้rแทนA.rการสร้างช่วงได้
Downgoat

แน่ใจว่านี่คือ 35 ไบต์ ? ฉันได้รับ 35 ตัวอักษรหรือ 40 ไบต์
จัดการ

@manatwork นี้จะเป็น 35 ไบต์ในรูปแบบการเข้ารหัสมาตรฐาน ISO / IEC_8859-1 แต่ฉันไม่แน่ใจว่า TeaScript สนับสนุนการเข้ารหัสนั้นดังนั้นฉันจะเปลี่ยนเป็น 40 ไบต์ในตอนนี้
ETHproductions

0

C, 96 ไบต์

i,a[1<<16];main(n){for(scanf("%d",&n);i<n*n;a[~(i%n)*~(i++/n)]="%d ");while(i)printf(a[i--],i);}

สิ่งนี้จะพิมพ์ตัวเลขตามลำดับจากมากไปน้อย ยินดีรับข้อเสนอแนะเนื่องจากดูไม่เหมาะสม


0

JavaScript (ES6), 86 ไบต์

n=>{n++;a=[];for(j=1;j<n;j++)for(i=1;i<n;i++)if(a.indexOf(i*j)<0)a.push(i*j);return a}

มองย่อให้สั้นลง (อาจจะลองทำรังวนซ้ำ)


0

Perl 5, 91 ไบต์

for my $y (1 .. $ARGV[0]){
    map {$s{$n}++ unless($s{$n=$y*$_}) } ($y .. $ARGV[0])
}
print join(" ", sort {$a<=>$b} keys %s) . "\n";

ที่จะทำงานโดยผ่านการโต้แย้งในบรรทัดคำสั่ง เป็นการประกาศที่ค่อนข้างสั้นเมื่อใช้กับการจำกัดความและคำเตือน


0

Python, 124 102 ไบต์

n=input()
l=[1]
for i in range(1,n+1):
 for j in range(1,n+1):l.append(i*j)
print sorted(list(set(l)))

pythonic เพิ่มเติม!


2
อันที่จริงแล้วเป็น 123 ไบต์ไม่ใช่ 124 แต่คุณสามารถบันทึกได้สองสามไบต์โดยใช้พื้นที่เดียวต่อระดับการเยื้องแทนที่จะเป็น 4
Alex A.

1
นอกจากนี้คุณยังสามารถใส่l.append(i*j)ในบรรทัดเดียวกันกับถ้าเงื่อนไข ฉันคิดว่ามันจบลงด้วยการเป็น 102 ไบต์ทั้งหมด
El'endia Starman

3
และใช้แทน+= append
Kartik

@ El'endiaStarman แก้ไขแล้วขอบคุณ!
TanMath

1
ปัญหาที่ค่อนข้างน้อยหนึ่งอย่าง: list(set(l))ไม่รับประกันว่าจะถูกจัดเรียง
El'endia Starman

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.