Crack mã vào khóa kết hợp


22

Đưa ra một khóa kết hợp tiêu chuẩn như một trong hình. Cách để mở khóa là căn chỉnh 4 số trong mã trên dòng kết hợp. Sau nhiều năm phục vụ trung thành, bạn đã bị sa thải khỏi nhà máy khóa và đã quyết định trả thù chính xác bằng cách không lộn xộn các ổ khóa trước khi bạn gửi chúng đi, do đó để lại mọi khóa với sự kết hợp để mở khóa trên đường kết hợp.

Khóa kết hợp

Bạn cũng biết rằng bằng cách xem thứ tự của các số trong các dòng khác, có thể tìm ra những số nào phải nằm trên dòng kết hợp (và do đó kết hợp để mở khóa nó).

Nếu mỗi dòng trên khóa được cung cấp một số bắt đầu từ dòng 0 cho dòng kết hợp (dòng mở khóa) cho dòng 9. Ví dụ: nếu các số trên dòng 4 là 5336, thì kết hợp để mở khóa sẽ là 1992.

Thật không may, các khóa đã được đóng gói và tầm nhìn của bạn về từng khóa bị che khuất, vì vậy bạn chỉ có thể thấy các số trên các dòng khác nhau của khóa.

Các thách thức

Cho 4 cặp chữ số, trong đó chữ số đầu tiên của số nguyên biểu thị số dòng và chữ số thứ hai biểu thị số xuất hiện trên dòng đó, hãy tìm ra sự kết hợp với khóa. Ví dụ: nếu bạn nhập:

57 23 99 45

Sau đó, nó sẽ xuất ra:

2101

Hoặc là

25 78 63 15

3174

Giả sử đầu vào sẽ luôn là 4 số nguyên dương ở dạng `25 64 72 18.

Đây là , vì vậy các chương trình ngắn nhất về số byte sẽ thắng.

Ngoài ra đây là câu hỏi đầu tiên của tôi, vì vậy bất kỳ thông tin phản hồi được đánh giá cao.


Tôi nghĩ bạn cần làm rõ đầu vào. Bạn nói " Cho 4 cặp số nguyên " và sau đó đưa ra một ví dụ 57 23 99 45. Đó không phải là bốn cặp số nguyên: đó là bốn số nguyên. Và một số câu trả lời cho rằng họ lấy đó là một chuỗi, trong khi những người khác cho rằng nó được phân tích cú pháp sẵn sàng là 4 ints.
Peter Taylor

Tôi không đồng ý, thực tế là nó cho biết bốn cặp số nguyên làm cho định dạng của đầu vào rõ ràng, 57 là cặp số nguyên 5 và 7, không phải là số nguyên 57. Giả định đầu tiên của tôi là dòng là 57 và kết hợp là 23.
Qwerty01

1
Làm thế nào về "cặp chữ số?" Điều đó sẽ rõ ràng và chính xác hơn nhiều (và cũng hoạt động với 0các s hàng đầu ).
lông mịn

Về mặt kỹ thuật, thuật ngữ chính xác sẽ là khóa hoán vị . Hầu hết các "khóa kết hợp" thực sự là khóa hoán vị, bởi vì thứ tự của các chữ số tạo ra sự khác biệt.
nyuszika7h

Về mặt kỹ thuật thì đúng, nhưng tôi không nghĩ sẽ tạo ra một tiêu đề hấp dẫn.
Rory McPerlroy

Câu trả lời:


32

CJam, 9 8 byte

ea9fbAf%

Đọc các cặp chữ số dưới dạng đối số dòng lệnh. Để thử mã trực tuyến , thay đổi eađể lS/đọc từ STDIN mô phỏng.

Chạy ví dụ

$ cjam <(echo ea9fbAf%) 57 23 99 45; echo
2101
$ cjam <(echo ea9fbAf%) 25 78 63 15; echo
3174

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

Mã ký tự của chữ số d48 + d . Do đó, xem xét chuỗi hai chữ số xy, một số 9 cơ sở mang lại 9 * (48 + x) + (48 + y) = 10 * (48 + x) + y - x ≡ y - x (mod 10) .

ea       " Push the array of command-line arguments.                                      ";
  9fb    " Mapped base 9 conversion; replace each string 'xy' with (9 * ord(x) + ord(y)). ";
     Af% " Take the results modulo 10.                                                    ";

Khỉ thật, bạn không thể để người khác chiến thắng, phải không? : P
Trình tối ưu hóa

Tôi không nghĩ rằng chúng tôi sẽ nhận được câu trả lời tốt hơn cho CJam hơn thế này
Rory McPerlroy

1
Điều gì vừa xảy ra ở đó?
Chiến tranh

1
@DigitalTrauma: Chắc chắn, hãy tiếp tục. Chuỗi "99"thực sự được hiểu là mảng [57 57]bởi b; "xy"9bđược thực hiện như 9 * ord(x) + ord(y). Tôi nên thêm nó vào câu trả lời của tôi.
Dennis

4
10.000 hầu như không bao gồm tất cả các chương trình 2 ký tự nếu chúng tôi giới hạn các giải pháp có thể đối với ASCII có thể in được.
Dennis

13

CJam, 13 12 11 ký tự

Nhờ user23013, giờ chỉ còn 11 ký tự :)

4{Ar:--A%}*

Giải thích:

4{       }*     "Run the code block 4 times";
   r            "Read the next input token (whitespace separated)";
    :-          "Subtract 2nd number from the first treating r as a 2 numbered string";
  A   -         "Subtract the result of above from 10";
       A%       "Take modulus of 10 and store it on stack";

Dùng thử trực tuyến

Tôi biết nó có thể được chơi gôn nhiều hơn. Nhưng đây là nỗ lực thực sự đầu tiên của tôi đối với CJam và tôi bị giới hạn bởi kinh nghiệm :)


Ngoài ra, các phương thức khác để làm điều tương tự trong 1 ký tự phụ:

l~]{_A/-A%}/     // My previous solution

hoặc là

4{ri_A/-A%}*     // As pointed out by Ingo

hoặc là

ea{i_A/-A%}/     // If input is passed through command line

Tôi đã chờ đợi điều này. Chà, tuần sau ...
Soham Chowdhury

Ba nhân vật đầu tiên có thể thay thế l~]. Tôi cảm thấy muốn phân tích cú pháp đầu vào với ít hơn ba, nhưng tôi chưa bao giờ sử dụng CJam trước đây: /
Ingo Bürk

4{ri_A/-A%}*ngắn hơn một byte.
Ingo Bürk

1
Ah, hoặc những gì bạn đã làm từ nhận xét trước đó của tôi. Bây giờ có hai giải pháp 12 byte! :)
Ingo Bürk

3
Hoặc 4{Ar:--A%}*.
jimmy23013

6

Golf (14 13 )

Dùng thử trực tuyến tại đây

Nó khá giống với giải pháp của Trình tối ưu hóa , nhưng trong một ngôn ngữ khác. Thật khó để tiếp cận nó theo một cách khác bởi vì vấn đề khá đơn giản , do đó, chiếc cà vạt chắc chắn thuộc về Trình tối ưu hóa, dù sao thì mục nhập đó vẫn sớm hơn.

~]{.10:^/-^%}/

Với cùng số byte bạn có thể làm

~]{.10/- 10%}/

Không có biến được xác định trước với giá trị 10 trong Golfscript?
Tối ưu hóa

@Optimizer Thật không may, không. Quá tệ, bởi vì đã có đầu vào trên ngăn xếp sẽ là lợi thế so với CJam.
Ingo Bürk

Vâng, nó có thể là 10 ký tự trong CJam (với đầu vào trên ngăn xếp) hoặc 11 ký tự trong Golfscript (với biến được xác định trước)
Trình tối ưu hóa

Tôi cũng có thể có 12 trong Golfscript nếu tôi không phải rời khỏi không gian - 10.
Ingo Bürk

1
heh, ngay cả những ngôn ngữ ngắn nhất cũng có những lần xuất hiện ngắn : P
Trình tối ưu hóa

6

GNU dc , 14 byte

Mượn 9 mẹo cơ bản thông minh của @ Dennis :

9i[?A%nd]dxxxx

Số nguyên đầu vào đọc từ STDIN, mỗi số một dòng.

Giải trình:

9i                # Set input radix to 9
  [     ]         # push a macro, defined thus:
   ?              #   read number from STDIN and push
    A             #   push literal 10
     %            #   calculate number mod 10
      n           #   print, with no newline
       d          #   duplicate macro
         d        # duplicate macro
          xxxx    # execute the macro 4 times    

Đầu ra:

$ for i in 57 23 99 45; do echo $i; done | dc ./combolock.dc
2101$ 
$ for i in 25 78 63 15; do echo $i; done | dc ./combolock.dc
3174$ 
$ 

Trả lời trước, 18 byte:

Bởi vì tôi nghĩ rằng tôi có thể đến gần hơn với các ngôn ngữ "chơi gôn" với điều này (nhưng không):

[A?A~--A%n]dddxxxx

1
Bạn có thể lưu một byte:9i[?A%nd]dxxxx
Dennis

@Dennis - Tuyệt vời! Bây giờ tôi là cổ và cổ với golf và APL!
Chấn thương kỹ thuật số

6

C 64 63 56 hoặc 61

Nếu đầu vào có thể được dẫn từ tập tin

main(a){while(scanf("%d",&a)>0)putchar(48+(a-a/10)%10);}

Nếu đầu vào nên được gõ vào stdin

i;main(a){for(;i++-4;putchar(48+(a-a/10)%10))scanf("%d",&a);}

Đọc bốn số trong một vòng lặp và sau đó xử lý từng số bằng cách trừ chữ số đầu tiên khỏi giá trị và in kết quả modulo 10.

Tiết kiệm nhờ các bình luận khác nhau bên dưới và cũng sử dụng putar thay vì printf


Mát mẻ. Bạn có thể lưu dấu phẩy bằng cách đặt scanfbên ngoài for()như thế nàya,i;main(){for(;i++-4;printf("%d",(a-a/10)%10))scanf("%d",&a);}
Level River St

Bạn cũng có thể lưu 2 byte bằng cách sử dụng a*.9thay vìa-a/10
rev

@steveverrill Thích nó. Vì vậy, tập trung vào việc đặt mọi thứ vào vòng lặp for mà tôi đã bỏ lỡ
Alchymist

1
@AcidShout Xin lỗi - nó không hoạt động. Ví dụ: 78 * .9 = 70.2, trong khi 78 - 78/10 = 71. Ngoài ra, sử dụng .9 sẽ thúc đẩy đối số tăng gấp đôi để tôi không thể lấy mod.
Alchymist

Bạn có thể lưu một vài byte bằng cách sử dụng whilevòng lặp và khai báo alàm đối số của main:main(a){while(scanf("%d",&a)>0)printf("%d",(a-a/10)%10);}
Dennis

5

Con trăn 3, 64

Nói thẳng ra.

print(''.join([(i-i//10)%10 for i in map(int,input().split())]))

Nó có thể ngắn hơn nếu tôi được phép in, [2, 1, 0, 1]thay vào đó ( 46 ):

print([i%10-i//10 for i in map(int,input().split())])

Bạn có thể tiết kiệm một số bằng cách lấy str((i-i//10)%10)trực tiếp thay vì sử dụng một giây map(). Tôi cũng bắt đầu với máy phát điện, nhưng thấy rằng một forvòng lặp thực sự kết thúc ngắn hơn.
DLosc

Yup, cảm ơn vì điều đó!
Soham Chowdhury

Tại sao bạn sử dụng danh sách hiểu? Sử dụng genexps để lưu 2 ký tự : print(''.join((i-i//10)%10for i in map(int,input().split()))). Ngoài ra, nếu khoảng trắng được cho phép trong đầu ra, bạn có thể tránh joinvà sử dụng bộ giải nén tuple : print(*((i-i//10)%10for i in map(int,input().split()))).
Bakuriu

Tôi đoan la bạn đung.
Soham Chowdhury

4

C, 92

#define a(n) ,(10+v[n][1]-*v[n])%10
main(int c,char**v){printf("%d%d%d%d"a(1)a(2)a(3)a(4));}

Đầu vào từ dòng lệnh. Trừ mã ASCII đầu tiên của mỗi đối số từ đối số thứ hai, thêm 10 và lấy modulo 10.

Tôi nghĩ rằng đây là lần đầu tiên tôi viết một chữ printfbốn %và không có dấu phẩy (dấu phẩy nằm trong #define.)


#define f scanf("%c%c ",&a,&b);putchar(48+(9*a+b)%10)theo sau a,b;main(){f;f;f;f;}sẽ là 18 byte ngắn hơn.
Dennis

@Dennis đó là một cải tiến tuyệt vời, nhưng về cơ bản, đây là một chương trình hoàn toàn khác. Tôi nghĩ rằng nếu có ai đăng nó, thì đó phải là bạn chứ không phải tôi. Tôi không chắc chắn nếu không gian trong scanflà cần thiết, được cho scanflà chỉ phân tích khoảng trắng như một dấu phân cách. Alchymist có một ý tưởng thậm chí còn tốt hơn ở C. Nhưng có vẻ như bạn đã giành được nó với câu trả lời Cjam của bạn.
Cấp sông St

Vâng, tôi đã bắt đầu bằng cách nhận thấy rằng không gian sau a(n)có thể bị bỏ qua, sau đó tôi nhận thấy rằng việc đặt printf("%d%,...)xung quanh macro của bạn sẽ tiết kiệm được một vài byte và cuối cùng tôi đã mang đi một chút ... - Không gian cần thiết kể từ khi %cđọc một ký tự, bất kỳ nhân vật, vì vậy trong lần chạy thứ hai, nó sẽ lưu trữ 32 in a. - Đánh bại CJam bằng C nên tỏ ra khó khăn. printf()đã dài như câu trả lời của tôi ...
Dennis

4

Java - 203 byte

Chỉ vì có được một mục Java, tôi thấy một cơ hội tốt đẹp để cung cấp cho mã này chơi golf một cơ hội (nộp hồ sơ đầu tiên).

class M{public static void main(String[] a){String r="";for(int i=0;i<4;i++){int l=Byte.valueOf(a[i].substring(1));int f=Byte.valueOf(a[i].substring(0,1));r+=(l-f<0)?l-f+10:l-f;}System.out.print(r);}}

Nếu có chỗ cho một số cải tiến, tôi rất vui được biết về chúng ;-)


Bạn có thể tìm kiếm [mẹo] và nhận các mẹo khác nhau về việc chơi gôn để bắt đầu :)
Trình tối ưu hóa

Hay quá cảm ơn! Kiểm tra một số mẹo giúp tôi cạo sạch 13 byte :)
Sander

3

Lua - 46 ký tự

while''do a,b=io.read(1,1,1)print((b-a)%10)end

Đọc ba ký tự cùng một lúc (cho tôi một chút thương xót khi nhập một khoảng trắng ở cuối) và mặc dù a và b là chuỗi-y ... ba BÀI TẬP cho phép họ có được một số nguyên bé khỏe mạnh. Có bao quanh kiểm tra trong khi in.

Làm thế nào tôi chạy nó:


1
Bạn có thể cung cấp một ví dụ đầu vào / đầu ra dữ liệu, dường như không thể chạy nó trên Ideone
Rory McPerlroy

@ Harry12345 À, xin lỗi về điều đó. Anarchy Golf đang tập trung vào cách tôi thực hiện stdinput. Tôi có thể mã hóa nó tốt hơn, nhưng meh, lua là khủng khiếp. Tôi đã đăng một ví dụ về tôi đang chạy chương trình.
AndoDaan

3

JavaScript ES6 - 53 43 byte

f=n=>n.replace(/.. ?/g,a=>(1+a[1]-a[0])%10)

Chức năng khá đơn giản, sử dụng regex để lấy số. Dùng thử tại http://jsfiddle.net/efc93986/1/ . Nếu các chức năng không được phép, một chương trình độc lập ở mức 52 byte:

alert(prompt().replace(/.. ?/g,a=>(1+a[1]-a[0])%10))

Vì ES6 hiện chỉ hoạt động trên Firefox, đoạn mã sau hoạt động trên mọi trình duyệt hiện đại, ở mức 70 byte:

alert(prompt().replace(/.. ?/g,function(a){return(1+a[1]-a[0])%10}))

Tôi yêu bạn 1+.
Neil

1
Câu hỏi nói rằng giả sử đầu vào hợp lệ, vì vậy bạn có thể sử dụng ...?thay vì /\d+ ?. Không gian sau khi trở về có thể được bỏ qua. Ngoài ra, vì không có I / O cụ thể nào được chỉ định, bạn sẽ có thể sử dụng một chức năng.
Dennis

1
a-a[0]thay vì 1+a[1]-a[0]nên làm việc như là tốt.
Dennis

2

Python 2 - 33 byte

for i in input():print(i-i/10)%10

Chấp nhận đầu vào được phân tách bằng dấu phẩy. Ví dụ: Đầu vào:

29,26, 31, 88

Đầu ra:

7
4
8
0

Nếu đầu ra là bắt buộc để khớp chính xác với ví dụ thì nó dài hơn nhiều. 47 byte:

print"%d"*4%tuple((i-i/10)%10 for i in input())

input()không hoạt động trong trình thông dịch Python 2 của tôi.
Soham Chowdhury

@SohamChowdhury bạn đã sử dụng dấu phẩy?
frageum

2
Ồ, không, tôi đã không. Nó hoạt dộng bây giờ. Bên cạnh đó, tôi nghĩ bạn cần lấy đầu vào được phân tách bằng dấu cách cho mỗi thông số.
Soham Chowdhury

3
Tôi đồng ý, đầu vào phải được giới hạn không gian
Rory McPerlroy

2

APL, 14

10|{--/⍎¨⍕⍵}¨⎕

Giải thích
lấy đầu vào từ màn hình. Các giá trị được phân tách bằng dấu cách được phân tích cú pháp dưới dạng một mảng.
{...}¨cho mỗi số, đưa nó vào chức năng.
⍎¨⍕⍵lấy đối số, tạo một mảng các chữ số của nó.
--/tính toán đơn vị trừ hàng chục.
10|mod 10.


1
Đây có thể là 14 ký tự, nhưng nó là 24 byte .
Ingo Bürk


nhưng đối với mã golf, chúng tôi tính bằng UTF-8, không phải là một bộ ký tự đặc biệt. Đó chỉ là một kẽ hở và có thể bị lạm dụng rất dễ dàng.
Ingo Bürk

1
@ IngoBürk Theo meta.codegolf.stackexchange.com/a/961/6972 câu trả lời có thể được mã hóa trong bất kỳ mã hóa nào trừ khi OP quy định khác. Thực sự có một bảng mã IBM cho các ký tự APL là ánh xạ một byte đơn, chính xác là những gì Dyalog đã sử dụng trước Unicode 3.0. Nếu bạn nhấn mạnh vào Unicode, nếu tôi phát minh ra một ngôn ngữ mới sử dụng các ký tự không phải là Unicode thì sao? Làm thế nào bạn sẽ đếm byte cho điều đó?
TwiNight

Tôi có thể đã tuyên thệ mặc định là UTF-8. Đó là 14 byte.
Ingo Bürk

2

J - 20 15

Dạng không động từ (dưới dạng câu lệnh thay vì định nghĩa hàm) ngắn hơn 5 ký tự:

10|-~/|:10#.inv

Hình thức động từ là một chuyến tàu tốt đẹp :

10|[:-~/[:|:10#.inv]

Động từ này được sử dụng trên các ví dụ đầu vào:

   10|-~/|:10#.inv 57 23 99 45
2 1 0 1
   10|-~/|:10#.inv 25 78 63 15
3 1 7 4

rotd =: 10|[:-~/[:|:10#.inv] NB. verb form

   rotd 25 78 63 15
3 1 7 4
   rotd 57 23 99 45
2 1 0 1

2

Haskell 60 58

main=interact$show.map((\x->mod(x-x`div`10)10).read).words

Các chữ số ký tự đơn, một kẻ thù thực sự trong môn đánh gôn Haskell.


2

Perl: 38 40

print abs($_-int$_/10)%10for split" ",<>

Đầu ra:

% perl code.pl
57 23 99 45
2101

25 78 63 15                                     
3174

1
1. Dấu gạch dưới là cú pháp đánh dấu, vì vậy mã của bạn có một chút sai lầm. Để ngăn chặn điều này, mã thụt lề với bốn khoảng trắng. 2. abskhông cần thiết; x - x/10không thể âm 3. Nếu bạn sử dụng các cờ -040pe(thường được tính là 5 byte) để lặp lại trên đầu vào được phân tách bằng dấu cách, bạn có thể rút ngắn mã của mình thành $_=($_-int$_/10)%10. 4. Nếu bạn muốn tránh các cờ dòng lệnh, bạn vẫn có thể lưu một vài byte bằng cách đặt $/=$;và xóa cuộc gọi đến split.
Dennis

1

Ruby, 35 byte

$*.map{|n|a,b=n.bytes;$><<(b-a)%10}

Giải trình

Đầu vào được lấy làm đối số dòng lệnh. String#bytestrả về một mảng các số nguyên (mã ký tự ASCII). Chỉ có sự khác biệt giữa mã ký tự cuối cùng và mã đầu tiên là quan trọng, chứ không phải bản thân Số nguyên.


1

C # & LinqPad: 104

Util.ReadLine<string>("").Split(' ').Select(s =>(s[1]-s[0])).Aggregate("",(r,a)=>r+(a<0?10+a:a)).Dump();

1

C ++ 118

int main()
{
int a,b,c;
for(int i=0; i<4; i++)
{
cin>>a;
b=a/10;
a=a%10;
c=a-b;
if(c<0)c+=10;
cout<<c;
}
}

1. Không chắc chắn về các trình biên dịch khác, nhưng GCC yêu cầu #include<iostream>std::trước cincout . 2. Bạn không cần điều kiện nếu bạn bỏ qua a=a%10. 3. Bạn không cần các biến bc, các nguồn cấp dữ liệu và (với một vài sửa đổi) các dấu ngoặc quanh vòng lặp for.
Dennis

1
@SeanD: Vui lòng không phê duyệt các chỉnh sửa sửa đổi mã. Trong trường hợp cụ thể này, chỉnh sửa làm cho câu trả lời không hợp lệ. Nó cũng loại bỏ dòng đầu tiên, cần có mặt trong tất cả các câu trả lời.
Dennis

1
(CC @TeunPronk)
Dennis

@Dennis thường trả lời trên trang này không bao gồm các dòng tiền xử lý. Tôi đã bỏ qua các dòng #include<iostream>using namespace std;
bacchusbeale

Tôi biết thường không bao gồm trong số byte, nhưng tôi nghĩ rằng chúng nên có mặt trong câu trả lời.
Dennis

1

PHP - 90 ký tự

Tôi nghĩ rằng tôi sẽ thử chơi golf mã vì vậy đây là lần thử đầu tiên của tôi - có thể được đánh gôn nhiều hơn.

<?php $a=array(57,23,99,45);foreach($a as$b){echo abs(substr($b,0,1)-substr($b,1,1)%10);}

58 ký tự (lịch sự của Ismael Miguel)

for($i=0,$a=$_GET[n];$i<8;)echo abs($a[$i++]-$a[$i++]);

Truy cập tập tin bằng

file.php?n=57239945

Hãy thử mã này: <? for($i=0;$i<4;)echo abs($_GET[n][$i]%10);dài 44 ký tự. Truy cập từ một trình duyệt bằng cách sử dụng file.php?n[]=xx&n[]=yy&n[]=xy&n[]=yx. (mã chưa được kiểm tra)
Ismael Miguel

Ý tưởng tốt khi sử dụng $_GETnhưng nó hiển thị 57% 10 và tôi cần (5-7)% 10
Rory McPerlroy

Hãy thử cái này : <? for($i=0,$a=$_GET[n];$i<4;++$i)echo abs($a[$i][0]-$a[$i++][1]%10);. Đáng buồn thay, nó dài 65 byte. (quên $igia số trên cái cuối cùng) Hoặc bạn có thể thử <? for($i=0;$i<8;)echo abs($_GET[n][$i++]-$_GET[n][$i++]%10);và truy cập trình duyệt bằng cách sử dụng file.php?n[]=x&n[]=y&n[]=x&n[]=y&n[]=x&n[]=y&n[]=x&n[]=y, dài 61 byte.
Ismael Miguel

Vâng những cái thứ hai hoạt động, cần phải làm $_GET['n']tho. Đã chỉnh sửa câu trả lời của tôi.
Rory McPerlroy

Vâng, nó không bắt buộc. Nó chỉ đơn giản là đưa ra một cảnh báo. Điều đó là tốt cho trang web này. Nhưng hãy thử cái này : <? for($i=0,$a=$_GET[n];$i<8;)echo abs($a[$i++]-$a[$i++]);. Cái %10này là vô dụng và cái này đơn giản là trông đẹp hơn. Ngoài ra, bạn có thể truy cập nó bằng cách sử dụng file.php?n[]=xyxyxyxy. Giải pháp này dài 58 byte.
Ismael Miguel

0

Trăn 3, 60

for x in input().split():print(-eval('-'.join(x))%10,end='')

Đầu vào và đầu ra chính xác như được chỉ định, mặc dù nó không in một dòng mới. Hai thủ thuật thú vị ở đây: 1) thay thế hai cuộc gọi int()bằng một cuộc gọi đến eval()và 2) sử dụng join()để nhận a-b, sau đó phủ nhận nó b-atheo yêu cầu. May mắn thay, toán tử modulo của Python cho các giá trị dương ngay cả khi đối số đầu tiên là âm!


Tại sao điều này bị hạ cấp? Nó hoạt động hoàn toàn tốt. (Btw, eval('-'.join(x))mánh khóe thật tuyệt vời.)
flornquake

@flornquake Cảm ơn!
DLosc
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.