Tìm hai số nguyên từ danh sách không có thứ tự để tổng hợp cho đầu vào


13

Đây là một câu hỏi phỏng vấn của Google, xem ở đây để biết một liên kết youtube.

Nhiệm vụ:

Tìm 2 số nguyên từ danh sách không có thứ tự tổng hợp thành một số nguyên cho trước.

  1. Đưa ra một danh sách các số nguyên không có thứ tự, tìm 2 số nguyên tổng cho một giá trị đã cho, in 2 số nguyên này và biểu thị thành công (thoát 0). Chúng không cần phải là bất kỳ số cụ thể nào (tức là 2 số nguyên đầu tiên tổng hợp đúng số), bất kỳ cặp nào tính tổng với giá trị sẽ hoạt động.
  2. một số nguyên là dương và lớn hơn không.
  3. một danh sách các số nguyên có thể có trong bất kỳ cấu trúc dữ liệu nào, bao gồm một tệp số nguyên - một số nguyên trên mỗi dòng.
  4. nếu không tìm thấy số nguyên nào, chỉ ra lỗi (thoát 1).
  5. hai số nguyên tại các vị trí khác nhau trong danh sách phải được trả lại. (tức là bạn không thể trả lại cùng một số từ cùng một vị trí hai lần)

(Lưu ý: trong video, đây không phải là chính xác các yêu cầu. 'Người phỏng vấn' đã thay đổi nhiều lần.)

ví dụ.

sum2 8 <<EOF
1
7
4
6
5
3
8
2
EOF

Trạng thái in 35thoát là 0. Lưu ý rằng trong đó 1,72,6cũng sẽ được phép kết quả.

sum2 8 <<EOF
1
2
3
4

Trả về trạng thái thoát 1 vì không có kết hợp nào. 4,4không được phép, theo quy tắc 5.


15
Đây có thể là một câu hỏi tuyệt vời nếu nó có cơ hội rũ bỏ một số kết thúc lỏng lẻo trong Sandbox trước. Ví dụ, đối với một cái gì đó như thế này, tôi mong đợi viết một hàm trả về giá trị giả hoặc một cặp số.
Neil

2
Trong ví dụ, tại sao cặp trả về là (3,5) chứ không phải (1,7)?
Rod

4
Làm thế nào có thể có một cặp "đầu tiên" trong một danh sách không có thứ tự? Điều đó vốn đã tự mâu thuẫn.
Peter Taylor

23
Tôi không thực sự nghĩ rằng lối ra 0 / thoát 1 là một ý tưởng tốt. Nhiều ngôn ngữ không thể tồn tại dễ dàng như vậy và nói chung , nó được phép thoát với một lỗi (ví dụ bỏ qua STDERR) Nhiều ngôn ngữ chơi golf thậm chí không có cách dễ dàng để thoát bằng mã thoát tôi nghĩ
R

2
Suy nghĩ thứ hai, một số câu trả lời đã trải qua một số nỗ lực để tạo mã thoát 1, vì vậy tốt hơn hết là không thay đổi các yêu cầu ngay bây giờ
Luis Mendo

Câu trả lời:


5

Bash, 84 byte

Việc tôi triển khai (đại khái) giải pháp công cụ của Google nhưng sử dụng bash và luồng đầu vào - không phải là giải pháp của tôi, vì vậy điều này không được tính.

while read V;do((V<$1))&&{ ((T=R[V]))&&echo $T $V&&exit;((R[$1-V]=V));};done;exit 1

phương pháp

trong khi chúng ta có thể đọc số nguyên V từ luồng đầu vào nếu nhỏ hơn mục tiêu $ 1 thì nếu đã thấy $ 1-V rồi in $ 1-V và V và thoát 0 (khác) lưu ứng viên cho đầu vào $ 1-V thoát 1


4

Brachylog , 9 byte

h⊇Ċ.+~t?∧

Hãy thử trực tuyến!

Giả sử tôi hiểu đúng thử thách

Giải trình

h⊇Ċ          Ċ ('couple') has two elements, and is a subset of the head of the input
  Ċ.         Output = Ċ
   .+~t?     The sum of the elements of the Output is the tail of the Input
        ∧    (disable implicit unification)

4

Perl 6 , 59 byte

$_=get;put lines().combinations(2).first(*.sum==$_)//exit 1

Dùng thử Hãy
thử mà không có kết quả có thể

Mở rộng:

$_ = get;            # get one line (the value to sum to)

put                  # print with trailing newline
    lines()          # get the rest of the lines of input
    .combinations(2) # get the possible combinations
    .first(          # find the first one
      *.sum == $_    # that sums to the input
    )
  //                 # if there is no value (「Nil」)
    exit 1           # exit with a non-zero value (「put」 is not executed)

4

JavaScript ES6, 58 70 68 64 byte

a=>b=>{for(i in a)if(a.includes(b-a[i],i+1))return[a[i],b-a[i]]}

Trả về một cặp số dưới dạng một mảng nếu tìm thấy, nếu không thì trả về undefinedgiá trị giả.

f=a=>b=>{for(i in a)if(a.includes(b-a[i],i+1))return[a[i],b-a[i]]}

console.log(f([1,7,4,6,5,3,8,2])(8));
console.log(f([1,2,3,4,5,6,7,8])(8));
console.log(f([1,2,3,4])(8));
console.log(f([2,2])(4));


Ví dụ là 3, 5nhưng kết quả này 1, 7...
Neil

@Neil, xin lỗi, tôi đã sửa đổi quy tắc vì tôi đã làm hỏng. 1,7 là ok.
philcolbourn

1
Nó sẽ không làm việc cho f([2,2] 4)?
vách đá

1
@cliffroot nên hoạt động cho trường hợp đó ngay bây giờ
Tom

1
Đẹp includeslừa.
Neil

4

JavaScript (ES6), 61 57 56 byte

Lấy mảng số nguyên avà tổng số dự kiến strong cú pháp currying (a)(s). Trả về một cặp số nguyên phù hợp dưới dạng một mảng hoặc undefinednếu không có cặp nào như vậy tồn tại.

a=>s=>(r=a.find((b,i)=>a.some(c=>i--&&b+c==s)))&&[r,s-r]

Định dạng và nhận xét

a =>                      // given an array of integers (a)
  s => (                  // and an expected sum (s)
    r = a.find((b, i) =>  // look for b at position i in a such that:
      a.some(c =>         //   there exists another c in a:
        i-- &&            //     - at a different position
        b + c == s        //     - satisfying b + c == s
      )                   //   end of some()
    )                     // end of find(): assign the result to r
  ) &&                    // if it's not falsy:
  [r, s - r]              // return the pair of integers

Kiểm tra


3

Thạch , 14 byte

ŒcS=⁹$$ÐfḢṄo⁶H

Hãy thử trực tuyến!

Đây là một chức năng (không phải là một chương trình đầy đủ) xuất ra đầu ra tiêu chuẩn. (Liên kết TIO có trình bao bọc chạy chức năng và bỏ qua giá trị trả về của nó.)

Chương trình này có thể ngắn hơn 4 byte nếu không yêu cầu mã thoát; Trả về mã thoát 1 trong Jelly khá khó. (Có thể có một cách khó khăn hơn để làm điều này mà tôi đã bỏ lỡ.)

Giải trình

ŒcS=⁹$$ÐfḢṄo⁶H
Œc                All pairs of values from {the first argument}
       Ðf         Take only those which
  S=⁹               sum to {the second argument}
     $$           Parse the preceding three builtins as a group
         Ḣ        Take the first result (0 if there are no results)

          Ṅ       Output this result (plus a newline) on standard output
           o⁶     If this value is falsey, replace it with a space character
             H    Halve every element of the value

Chúng ta có thể giảm một nửa số nguyên trong một cặp, vì vậy o⁶Hsẽ không làm gì nếu chúng ta tìm thấy kết quả, ngoài việc trả về giá trị trả về vô dụng dù sao cũng không liên quan ( phục vụ như một phương thức một byte thuận tiện để xác định trả về của hàm giá trị sớm, theo quy tắc PPCG). Tuy nhiên, nếu chúng tôi không tìm thấy kết quả, cuối cùng chúng tôi sẽ cố gắng giảm một nửa ký tự không gian, một thao tác quá vô nghĩa, nó làm cho trình thông dịch Jelly bị sập. May mắn thay, sự cố này tạo ra mã thoát là 1.


3

Perl 5 , 51 byte

46 byte mã + cho 5 byte cho -plicờ.

$\="$_ $v"if$h{$v=$^I-$_};$h{$_}=1}{$\||exit 1

Hãy thử trực tuyến!

Ý tưởng là lặp lại trong danh sách đầu vào: trên một số x( $_), nếu trước đó chúng ta đã thấy n-x( $^I-$_) thì chúng ta đã tìm thấy những gì chúng ta đang tìm kiếm và đặt thành $\hai giá trị này ( "$_ $v"). Cuối cùng, nếu $\không được đặt, thì chúng tôi exit 1, nó sẽ được in hoàn toàn.


Một tab chữ có hoạt động thay cho hai ký tự ^Ikhông?

@ ais523 Có vẻ như tôi không thể. Có lẽ nó có thể trên các phiên bản cũ hơn của Perl.
Dada

3

Röda , 60 56 byte

f s,a{seq 1,s|{|x|[[x,s-x]]if[x in a,s-x in a-x]}_|pull}

Hãy thử trực tuyến!

Mã này ném một lỗi nếu không có câu trả lời. Nó tạo ra tất cả các cặp có thể có thể tạo thành tổng s, tức là. 1, s-1, 2, s-2, 3, s-3, ... Sau đó, nó sẽ kiểm tra nếu cả hai con số trong mảng avà nếu như vậy, đẩy họ đến con suối. pullđọc một giá trị từ luồng và trả về nó. Nếu không có giá trị nào trong luồng, nó sẽ báo lỗi. a-xtrả về mảnga với xgỡ bỏ.


3

Python 2, 60 byte

Điều này ngắn, cho đến khi các quy tắc thoát với mã 1 được làm rõ. Bây giờ thoát với lỗi nếu không tìm thấy gì.

-5 byte nhờ @Peilonrayz

-4 byte nhờ @Rod

Dùng thử trực tuyến

a,s=input()
while a:
 x=a.pop()
 if s-x in a:r=s-x,x
print r

@Peilonrayz Không nhận ra điều đó, cảm ơn bạn!
Dead Possum

@Peilonrayz Điều này sẽ vi phạm quy tắc fith: hai số nguyên ở các vị trí khác nhau trong danh sách phải được trả về. (tức là bạn không thể trả lại cùng một số từ cùng một vị trí hai lần)
Dead Possum

3
Bạn có thể sử dụng dấu cách + tab để thụt lề hỗn hợp để giảm 2 byte hoặc chuyển sanginput() giảm 4 byte
Rod

@Rod Cảm ơn! Đầu vào có vẻ đẹp hơn
Dead Possum

2
@Eric Duminil Vâng. Nó tương đương với eval(raw_input())(tôi nghĩ).
Yytsi

2

C ++ 133 byte (được biên dịch với clang 4 và gcc 5.3 -std = c ++ 14)

#include <set>
auto f=[](auto s,int v,int&a,int&b){std::set<int>p;for(auto i:s)if(p.find(i)==end(p))p.insert(v-i);else{a=v-i;b=i;}};

C 108 byte

void f(int*s,int*e,int v,int*a,int*b){do{int*n=s+1;do if(v-*s==*n){*a=*s;*b=*n;}while(++n<e);}while(++s<e);}

1
Chào mừng đến với trang web! Thật không may, tôi nghĩ rằng bạn cần thêm 15 byte cho #include <set>và một vài nữa cho std::set. Mặc dù bạn cũng có thể lưu một số byte nếu bạn loại bỏ các dấu ngoặc xung quanhp.insert(v-i);
DJMcMayhem

@DJMcMayhem oh, cảm ơn bạn. Vì vậy, tôi nên bao gồm main ()?
em2er

@ em2er Không, bạn không cần đưa vào main. Chúng tôi xem xét (trừ khi có quy định khác trong thử thách) rằng một chức năng là một đệ trình hợp lệ. (chào mừng bạn trên trang web btw!)
Dada

Không, một chức năng trình là tốt. (Và ngắn hơn nhiều vì bạn có thể lấy đầu vào làm đối số) Bạn chỉ cần đếm bất kỳ bao gồm mà trình của bạn yêu cầu.
DJMcMayhem

1
@DJMcMayhem @Dada cảm ơn rất nhiều! tôi cũng không chắc endlắm, nhưng nó biên dịch trên gcc mà không có std::(và đặt nếu không có khóa học)
em2er

2

Haskell , 34 byte

(n:v)#s|elem(s-n)v=(n,s-n)|1<2=v#s

Hãy thử trực tuyến!

Đối với mỗi phần tử của danh sách, hàm này kiểm tra xem (phần tử tổng) có trong phần sau của danh sách không. Trả về cặp vợ chồng đầu tiên mà nó tìm thấy. Nếu hàm đến cuối danh sách, nó sẽ xuất hiện lỗi "các mẫu không hoàn chỉnh" và thoát với mã 1.


Tôi sợ cách tiếp cận này không hiệu quả đối với đầu vào như [2,2]#4.
Laikoni

@Laikoni Cảm ơn bạn, tôi đã không đọc thử thách đủ tốt. Phiên bản mới này phải chính xác (và ngắn hơn ^^)
Leo

2

PowerShell, 109 97 byte

param($i,$a)($c=0..($a.count-1))|%{$c-ne($f=$_)|%{if($a[$f]+$a[$_]-eq$i){$a[$f,$_];exit}}};exit 1

Đã thực hiện một thỏa thuận 12 byte mà admBorkBork cung cấp

Giải trình

# Get the parameter passed where $i is the addition target from the array of numbers in $a
param($i,$a)

($c=0..($a.count-1))|%{
    # We are going to have two loops to process the array elements.
    # The first loop element will be held by $f
    $f=$_
    # Create a second loop that will be the same as the first except for the position of $f to
    # prevent counting the same number twice. 
    $c|?{$_-ne$f}|%{
        # Check if the number at the current array indexes add to the target value. If so print and exit.
        if($a[$f]+$a[$_]-eq$i){$a[$f],$a[$_];exit}        
    }

}
# If nothing was found in the loop then we just exit with error.
exit 1

Các quy tắc hiện tại tìm kiếm mã thoát mà điều này không. Những cái đó có thể được gỡ bỏ và chỉ cần kiểm tra các số được trả lại và giả.

Sử dụng mẫu

Nếu đoạn mã trên được lưu dưới dạng hàm s

s 8 @(1,2,3,4)
s 8 @(1,7,4,6,5,3,8,2) 

Bạn có thể lưu thêm một vài byte bằng cách loại bỏ $cvà lặp xuống dưới -($a.count-1)..1|%{$f=$_;--$_..0|%{if...
admBorkBork

2

R, 49 byte

function(x,y){r=combn(x,2);r[,colSums(r)==y][,1]}

Điều này tìm thấy tất cả 2 kết hợp xvà trả về một ma trận. Sau đó, tính tổng theo cột và tìm tất cả các khoản tiền bằng y(vì vậy không có [,1]phần ở cuối, nó sẽ in tất cả các kết hợp mà tổng của chúng bằng y)


2

Japt , 9 byte

Đã lưu nhiều byte nhờ @ETHproductions

à2 æ_x ¥V

Hãy thử trực tuyến!

Giải trình

à2 æ_x ¥V
à2         // Creates all combinations of the input, length 2
   æ       // Returns the first item where:
    _x     //     The sum of the two items in each set
       ¥V  //     == Second input   

Thí dụ

Input:        [1,2,3], 4
à2         // [[1,2],[1,3],[2,3]]
   æ_x     // [3,    4,    5    ]
       ¥V  //  3!=4, 4==4 ✓
Output:    //  1,3

2

Javascript, 114 96 86 84 byte

a=>b=>{c=b.length;for(x=0;x<c;x++)for( y=x;++y<c;)if(b[x]+b[y]==a)return[b[x],b[y]]}

Đã lưu 1 byte nhờ @Cyoce và 8 byte khác nhờ @ETH Productstions

Điều này trả về một tuple với sự kết hợp đầu tiên của các phần tử danh sách tổng hợp với đầu vào đã cho hoặc không có gì phù hợp. Tôi đã xóavar s trong chức năng; REPL.it gặp sự cố mà không có chúng, nhưng Chrome Dev Console xử lý việc này tốt ...

Hãy thử trực tuyến!


Không thoát mã 1, vì thách thức đặc biệt yêu cầu đầu vào không hợp lệ. Bây giờ, đó là một câu trả lời không hợp lệ, nhưng tôi đã hỏi OP về yêu cầu này đối với các ngôn ngữ không thể thực hiện dễ dàng.
Rɪᴋᴇʀ

@Matt Có, quy tắc đó được tuân thủ: y=x+1quan tâm đến điều đó.
steenbergh

1
Bạn có thể sử dụng a=>b=>...để lưu một byte
Cyoce 20/03/2017

1
Bạn có thể lưu ba byte khác với for(y=x;++y<b.length;){. Ngoài ra, bạn có thể xóa tất cả các bộ niềng răng ngoại trừ bộ niềng ngoài cùng và bạn có thể xóa khoảng trống saureturn
ETHproductions

1

Clojure, 77 byte

#(first(mapcat(fn[i a](for[b(drop(inc i)%):when(=(+ a b)%2)][a b]))(range)%))

Trả về cặp đầu tiên như vậy hoặc nil.


1

Haskell, 62 byte

r=return;s#[]=r 1;s#(a:b)|elem(s-a)b=print(a,s-a)>>r 0|1<2=s#b

Tôi vẫn không biết những gì được cho phép bởi thử thách và những gì không. Tôi sẽ tìm một hàm in một cặp số và trả về 0 nếu có giải pháp và không in gì và trả về 1 nếu không có giải pháp. Vì in là I / O, tôi phải nâng các giá trị trả về vào IO-Monad (thông qua return) và loại thực tế của chức năng là Num a => IO a.

Ví dụ sử dụng (với giá trị trả về được in bởi thay thế):

*Main> 4 # [2,2]
(2,2)
0

Hãy thử trực tuyến! .

Nếu tăng ngoại lệ được cho phép, failsẽ lưu một số byte (tổng 51):

s#[]=fail"";s#(a:b)|elem(s-a)b=print(a,s-a)|1<2=s#b

1

Thạch , 9 byte

ŒcS=¥ÐfḢZ

Jelly không có cách nào để đặt mã thoát thành các giá trị tùy ý, do đó, điều này tạo ra TypeError cho đầu vào mà không có giải pháp hợp lệ sẽ khiến trình thông dịch cha thoát ra với mã thoát 1 .

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

ŒcS=¥ÐfḢZ  Main link. Argument: A (array of integers), n (integer)

Œc         Yield all 2-combinations of different elements of A.
     Ðf    Filter by the link to the left.
    ¥        Combine the two links to the left into a dyadic chain.
  S            Take the sum of the pair.
   =           Compare the result with n.
       Ḣ   Head; extract the first pair of the resulting array.
           This yields 0 if the array is empty.
        Z  Zip/transpose the result.
           This doesn't (visibly) alter pairs, but it raise a TypeError for 0.

1

Nova , 101 byte

q(Int[] a,Int x)=>a{if(Int y=a.firstWhere({a.contains(x-a.remove(0))}))return [y,x-y];System.exit(1)}

Một điều hay về golf code là nó giúp tôi tìm ra lỗi trong ngôn ngữ của mình. ví dụ: không gian cần thiết giữareturn[y,x-y].

Khi tôi thêm các hàm đẩy / pop vào Array.nova và sửa lỗi trả về, sẽ là 96 byte:

q(Int[] a,Int x)=>a{if(Int y=a.firstWhere({a.contains(x-a.pop())}))return[y,x-y];System.exit(1)}

Sử dụng:

class Test {
    static q(Int[] a,Int x)=>a{if(Int y=a.firstWhere({a.contains(x-a.remove(0))}))return [y,x-y];System.exit(1)}

    public static main(String[] args) {
        Console.log(q([1, 2, 3, 4, 5], 8)) // [5, 3]
        Console.log(q([1, 2, 3, 4, 5], 5)) // [1, 4]
        Console.log(q([1, 2, 3, 4], 8)) // exit code 1
    }
}

Chỉnh sửa: Ngoài ra, có cách này ở 73 byte (69 sử dụng pop), quá:

q(Int[] a,Int x)=>[Int y=a.firstOrThrow({a.contains(x-a.remove(0))}),x-y]

FirstOrThrow sẽ đưa ra một Ngoại lệ, sẽ bị hủy và do đó cuối cùng sẽ thoát khỏi chương trình với mã thoát 1 .;)

Cách này có vẻ dễ đọc hơn.


0

Bình thường, 12 byte

hfqsThQ.ceQ2

Giải trình

       .ceQ2   Get all pairs from the second input
 fqsThQ        Find the ones whose sum is the first input
h              Take the first (exits with error code 1 if there aren't any)

0

PHP, 88 byte

for($i=1;$a=$argv[$k=++$i];)for(;$b=$argv[++$k];)if($a+$b==$argv[1])die("$a $b");die(1);

lấy đầu vào từ các đối số dòng lệnh, tổng hợp đầu tiên. Chạy với -nr.

May mắn thay, die/ exitthoát với 0khi bạn cung cấp cho nó một chuỗi làm tham số.

Tôi đã cố gắng hợp nhất các vòng lặp thành một; nhưng nó đòi hỏi một khởi tạo dài hơn và thử nghiệm lần này.


Ngày tồi tệ? for($i=1;$a=$argv[$k=++$i];)for(;$b=$argv[++$k];)$a+$b!=$argv[1]?:die(!0);và bạn nên có một cái nhìn về vấn đề này codegolf.stackexchange.com/questions/120803/...
Jörg Hülsermann

0

Toán học, 76 byte

f::e="1";If[(l=Cases[#~Subsets~{2},x_/;Tr@x==#2])=={},Message@f::e,First@l]&

Khá đơn giản: #~Subsets~{2}lấy tất cả các tập hợp con 2 phần tử của danh sách, sau đó Cases[...,x_/;Tr@x==#2]chỉ chọn những tập hợp có tổng là số chúng ta muốn. Nếu không có cái nào trong số này,If[l=={}, Message@f::e,First@l] in thông báo lỗif::e : 1 mà chúng ta đã xác định trước đó (vì tôi không biết "thoát trạng thái 1" nào khác có thể có nghĩa cho Mathicala); mặt khác, nó trả về mục đầu tiên trong danh sách các cặp có giá trị đúng.

Nếu chúng tôi được phép trả về giá trị falsey thay vì thực hiện điều trạng thái thoát kỳ lạ đó, đoạn mã sau có 58 byte:

If[(l=Cases[#~Subsets~{2},x_/;Tr@x==#2])=={},1<0,First@l]&

0

Scala, 55 41 byte

(l,n)=>l combinations 2 find(_.sum==n)get

Trả về danh sách hai số nếu chúng tồn tại và ném lỗi khác. Uncaught, lỗi này sẽ dẫn đến trạng thái thoát là 1.


0

Ruby, 53 48 byte

->a,s{p(a.combination(2).find{|x,y|x+y==s})?0:1}

Đầu vào: a là danh sách, s là tổng số dự kiến.

Nếu tìm thấy 2 số, in chúng và trả về 0, nếu không thì trả về 1, như trong thông số kỹ thuật.


0

TI-Basic, 59 byte

Prompt L1
Prompt X
While 1
L1(1→B
seq(L1(C),C,2,dim(L1→L1
If sum(not(X-L1-B
Then
Disp B,X-B
Return
End
End

Giải trình:

Prompt L1               # 4 bytes, input array like "{1, 2, 3}"
Prompt X                # 3 bytes, Input target sum
While 1                 # 3 bytes, until the list is empty
L1(1→B                  # 7 bytes, try the first element (now B)
seq(L1(C),C,2,dim(L1→L1  # 18 bytes, remove first element from list
If sum(not(X-L1-B       # 10 bytes, if any element in the list plus B is the target
Then                    # 2 bytes, then...
Disp B,X-B              # 7 bytes, print it and it's "complement"
Return                  # 2 bytes, and exit gracefully
End                     # 2 bytes
End                     # 1 byte

Nếu chương trình không thoát một cách duyên dáng, nó sẽ gây ra lỗi khi không có đủ yếu tố trong danh sách để chương trình tiếp tục.


0

CJam, 23 byte

l~_,1>{e!2f<::+#)}{;;}?

Đầu vào là sum numbers. Ví dụ : 6 [3 2 3]. Để lại một số dương cho sự thật và một chuỗi rỗng hoặc 0 cho falsey.

Giải trình:

l~    e# Read input and evaluate:  | 7 [3 2 3]
_     e# Duplicate:                | 7 [3 2 3] [3 2 3]
,     e# Take the length:          | 7 [3 2 3] 3
1>{   e# If more than 1:           | 7 [3 2 3]
  e!  e#   Unique permutations:    | 7 [[2 3 3] [3 2 3] [3 3 2]]
  2f< e#   Slice each to length 2: | 7 [[2 3] [3 2] [3 3]]
  ::+ e#   Some each:              | 7 [5 5 6]
  #   e#   Index:                  | -1
  )   e#   Increment:              | 0
}{    e# Else:                     | 7 [3 2 3]
  ;   e#   Pop                     | 7
  ;   e#   pop                     |
}?    e# Endif
e# Implicit output: 0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.