Bạn nhận được gì khi nhân 6 với 9? (42)


60

Tôi yêu môn toán. Nhưng tôi không thể tìm thấy một máy tính duy nhất có thể nhân chính xác. Họ dường như hiểu mọi thứ đúng trừ 6 * 9 (Đó là câu hỏi cho cuộc sống, vũ trụ và mọi thứ! Làm sao họ có thể hiểu sai?!). Vì vậy, tôi muốn tất cả các bạn viết một hàm cho tôi có thể nhân 2 số chính xác (và 6 * 9 bằng 42 thay vì 54. 9 * 6 bằng 54 vẫn còn).

Ồ, và tôi sẽ phải xây dựng nguồn trong Minecraft để ... ít byte nhất sẽ giành chiến thắng!

Tóm tắt

  • Lấy 2 số làm đầu vào (loại không thành vấn đề, nhưng chỉ có 2 mục sẽ được thông qua và thứ tự phải nhất quán. Vì vậy, các luồng và mảng đều ổn miễn là chúng giữ nguyên thứ tự chúng đi qua. Tức là, bản đồ đã thắng 't hoạt động vì nó không giữ trật tự)
  • Đầu ra bội số của cả hai số trừ khi chúng là 6 và 9, sau đó xuất 42 (vấn đề thứ tự!)
    • Tái bút Tôi chưa bao giờ thực sự giỏi trong việc đếm, vì vậy tôi nghĩ chỉ các số nguyên từ 0 đến 99 là số thực (loại được sử dụng không quan trọng)
  • Ít byte nhất cho mỗi ngôn ngữ sẽ thắng!

Bảng xếp hạng:


1
@Jonathan ALLan Có, thêm quy tắc cho điều đó.
Tezra

73
Thật trùng hợp, id câu hỏi có 42hai lần trong đó.
Erik the Outgolfer

1
nếu chỉ có số nguyên tối đa 99 là số thực, thì ví dụ 9 * 11 là dấu nhắc hợp lệ nhưng 10 * 10 thì không, phải không?
kẻ lang thang bóng tối

14
@EriktheOutgolfer và 12 là viết tắt của những gì cần trừ nếu đầu vào là 6 và 9.
Adám

11
@EriktheOutgolfer Ngay cả khi bạn đọc ID ngược.
T. Sar - Tái lập Monica

Câu trả lời:


65

Toán học, 15 byte

Số lượng byte giả định mã hóa Windows ANSI (CP-1252).

6±9=42
±n__:=1n

Xác định một toán tử nhị phân ±giải quyết vấn đề. Chúng tôi chỉ đơn giản định nghĩa 6±9=42là một trường hợp đặc biệt được ưu tiên và sau đó thêm một định nghĩa dự phòng làm ±cho phép nhân. Thứ hai sử dụng một mẹo chơi golf khá thú vị. Lý do công việc này thực sự khá công phu và chúng ta cần xem xét trình tự . Một chuỗi tương tự như những gì được gọi là một splat trong các ngôn ngữ khác. Về cơ bản, nó là một "danh sách" mà không có bất kỳ trình bao bọc nào xung quanh nó. Ví dụ f[1, Sequence[2, 3, 4], 5]là thực sự chỉ là f[1, 2, 3, 4, 5]. Khái niệm quan trọng khác là tất cả các nhà khai thác chỉ là đường cú pháp. Cụ thể, ±có thể được sử dụng như một toán tử đơn nguyên hoặc nhị phân và đại diện cho đầu PlusMinus. Vì vậy, ±xPlusMinus[x]a±bPlusMinus[a,b].

Bây giờ chúng ta có định nghĩa ±n__. Đây là tốc ký để xác định PlusMinus[n__]. Nhưng n__đại diện cho một chuỗi các đối số tùy ý . Vì vậy, điều này thực sự bổ sung một định nghĩa cho nhị phân (và n-ary) PlusMinuslà vô dụng. Giá trị của định nghĩa này là 1n. Làm thế nào để điều này nhân lên các đối số? Chà, 1nsử dụng phép nhân ngầm của Mathicala bằng cách đặt vị trí kề nhau để nó tương đương với 1*n. Nhưng *cũng chỉ là tốc ký cho Times[1,n]. Bây giờ, nlà chuỗi các đối số. Vì vậy, nếu chúng ta gọi a±bthì điều này thực sự sẽ trở thành Times[1,a,b]. Và đó chỉ là a*b.

Tôi nghĩ nó khá gọn gàng làm thế nào lạm dụng cú pháp này cho phép chúng ta xác định một toán tử nhị phân bằng cách sử dụng cú pháp đơn nguyên. Bây giờ chúng ta thậm chí có thể làm PlusMinus[2,3,4]để tính toán 24(cũng có thể được viết là ±##&[2,3,4]hoặc 2±Sequence[3,4]nhưng nó chỉ trở nên điên rồ vào thời điểm đó).


Tôi đặc biệt thích cách cơ bản đây là một bản vá cho 'máy tính' của tôi: 3 Để giải trí, nó có hoạt động cho * không? : 3
Tezra

3
@Tezra tốt, *là một toán tử tích hợp, vì vậy bạn Unprotectphải thêm nó để thêm định nghĩa, nhưng Unprotect[Times];6*9=42nên hoạt động (mặc dù không thể kiểm tra ngay bây giờ).
Martin Ender

1
Làm điều này với toán tử * thật là xấu xa .... Tôi thích nó! >: 3
Tezra

1
Làm thế nào tôi có thể upvote khi có chính xác 42 người khác?!? Đây là "+1 tương lai" của tôi sẽ được trao sau khi người khác phá vỡ nó! :-)
Vee

1
@MartinEnder Aww; Nhưng đó là bài Mathicala ngắn nhất và yêu thích của tôi cho đến nay. : 3
Tezra


25

C, 32 31 29 28 byte

-2 nhờ Digital Trauma
-1 nhờ Musicman523

#define f(a,b)a^6|b^9?a*b:42

Khá đơn giản. Khai báo một hàm macro fcó hai đối số ab.
Nếu a6b9, trở lại 42. Nếu không trả về ax b.

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


2
Sử dụng ^thay vì ==và điều chỉnh logic một chút: #define f(a,b)a^6||b^9?a*b:42- tiết kiệm 2 byte.
Chấn thương kỹ thuật số

@DigitalTrauma Chúc mừng: D
MD XF

1
Tôi nghĩ bạn có thể sử dụng |thay vì ||để lưu một byte khác, vì nó vẫn có mức độ ưu tiên thấp hơn^
musicman523

@ nhạcman523 Cảm ơn! Chỉnh sửa.
MD XF

1
Bạn cũng nên cập nhật phiên bản shortC của mình để thực hiện những thay đổi này
Musicman523

17

JavaScript (ES6), 20 byte

x=>y=>x-6|y-9?x*y:42

Giải trình:

Iff x == 6 và y == 9, x-6|y-9sẽ là 0 (giả mạo) và 42 sẽ là kết quả.

Đoạn trích:

f=

x=>y=>x-6|y-9?x*y:42

console.log(f(6)(9));
console.log(f(9)(6));


4
Hoàn thành rất tốt; ước gì tôi nghĩ về nó +1
Shaggy

14

Python 2 , 30 29 byte

Cảm ơn Jonathan Allan vì đã tiết kiệm một byte!

lambda x,y:x*[y,7][6==x==y-3]

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


2
Lưu một byte bằng cách sử dụng thực tế rằng 6 * 7 42:lambda x,y:x*[y,7][6==x==y-3]
Jonathan Allan

@Jonathan ALLan Ohh, thật gọn gàng! Cảm ơn! :)
Adnan

Giải pháp này cũng hoạt động trong Python 3
AMK

Chính xác những gì tôi nhận được! Dường như không thể tìm thấy bất kỳ cách nào để chơi golf hơn nữa.
FlipTack

12

05AB1E , 15 11 9 byte

-4 byte nhờ @Emigna

-2 byte nhờ @Adnan

P¹69SQi42

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

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

P          # multiply input
 ¹         # push first number
  69       # the number 69
    S      # split per character
     Q     # equality for both inputs
       i42 # if so, print 42
           # otherwise print product

Bạn có thể lưu 4 byte với‚D96SQi42ëP
Emigna

@Emigna huh ... Tại sao lại ,bắt đầu?
Neil A.

Ghép nối 2 đầu vào để chỉ so sánh một lần dưới dạng danh sách.
Emigna

Tôi cho rằng 6Qs9Q*sẽ làm việc tốt cho cùng một số byte.
Emigna

Thay đổi định dạng đầu vào sẽ tiết kiệm 2 byte:P¹69SQi42
Adnan

10

Java (OpenJDK 8) ,24 22 byte

-2 byte nhờ @ OlivierGrégoire

a->b->a==6&b==9?42:a*b

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


3
Chào mừng đến với PPCG! Tôi không biết nhiều về Java, nhưng bạn có thể xóa System.out.println()cuộc gọi và chỉ để hàm trả về kết quả không?
Sản phẩm ETH

2
@ LưuViênPhúc không có trong Java, vì tôi phải viết (a^6|b^9)==0vì không có so sánh "khác 0" ngầm định. Đoạn mã kết quả sẽ dài 27 byte. Dù sao, cảm ơn vì lời đề nghị, và xin vui lòng cho tôi biết nếu tôi nhận được tiền boa của bạn.
Bashful Beluga

1
@Riker không, nó không hoạt động như thế trong java. Ví dụ: đoạn trích int a = 5; if (a) do_some_stuff(); else do_other_stuff();đưa ra Type mismatch: cannot convert from int to booleanlỗi biên dịch. Chúng phải được thực hiện rõ ràng với các giá trị boolean; tham khảo SOORACLE .
Bashful Beluga

3
Bạn có thể sử dụng currying để dự phòng một byte và bạn có thể thoát khỏi dấu chấm phẩy vì nó không phải là một phần của lambda để dự phòng một byte khác : a->b->a==6&b==9?42:a*b.
Olivier Grégoire

1
Chỉ cần một lưu ý tại sao 0 không sai. Java là loại an toàn vì vậy 0 là số nguyên không phải là kiểu boolean và không được phép đánh máy không an toàn nên bạn không thể sử dụng các giá trị sai lệch
Martin Barker

6

Ruby, 24 byte

->a,b{a==6&&b==9?42:a*b}

a^6|b^9<1có thể làm việc như boolean. Khó kiểm tra trên điện thoại thông minh của tôi.
Eric Duminil

1
@EricDuminil Thật không may, biểu thức đó được phân tích cú pháp (((a^6)|b)^9)a.^(6).|(b).^(9), vì vậy, nó sẽ không hoạt động chính xác. a-6|b-9==0sẽ làm việc, nhưng điều đó không ngắn hơn.
Ventero

@Ventero: Tôi đã không nghĩ về điều đó. Cảm ơn. a,b==6,9sẽ tốt, nhưng nó cũng không hoạt động.
Eric Duminil

6

Brain-Flak , 158 154 148 140 138 126 byte

(({}<>)(((([()()()]<>)){})<({}{}({}))>{(()()()){}(<{}>)}{}))([()]{()(<{}>)}{})(({<{}>{}((<>))}{}){}<{}>{<({}[()])><>({})<>}{})

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

Giải trình

Mã này khá đơn giản. Chúng tôi tạo các bản sao của hai mục trên cùng trên ngăn xếp, chúng tôi trừ 6 từ một và 9 từ mục kia. Chúng tôi sau đó lấy nothai giá trị. Chúng tôi lấy andcác giá trị đó, nhân kết quả với 12. Nhân các đầu vào và trừ hai kết quả.


2
Bạn có thể muốn viết hoa notand(hoặc backtick chúng), đọc mô tả của bạn thay vì tăng gấp ba lần tôi.
MD XF

6

Factorio, 661 byte, 6 tổ hợp với 9 kết nối

Có một bộ kết hợp không đổi được đặt thành đầu ra A và B. Thay đổi các giá trị này để đặt đầu vào.

Chuỗi kế hoạch chi tiết (0.15.18):

0eNrNVm2O2jAQvcv8rEKFvSHLRuqPtrfYCkUhGWAkYkfOGDVCOUBv0bP1JLWTLQuB3U0QbfcPYvzxZt68eYr3sNxaLA0phngPlGlVQfxtDxWtVbr1a1yXCDEQYwEBqLTwUY4Z5WgmmS6WpFLWBpoASOX4HWLRBG8C+EScKr6MIJtFAKiYmLCrpw3qRNliicaleK2SAEpduata+fQObiI+zgKo/R+XIyeDWbcrA18IG71NlrhJd+RuuytPmInby1ucyq+uyFScnPHakWHrVg4VdScmnz2fPzQhjnxQlKlpS4zhk7ugLZd2BCTu0NS8IbXusMvalWgVJyuji4SUA4OYjcWmS606nm31wv8YzI+7SS66axbusHxh1zeITGaJ21C4w41XtyeHHCXH9D+o8eVUjYd3qoY47bc86rWPo158/yze2iCqPtxsmHx3r9ry3E6ylU9cTUv0aITDygwPZaaGeFMgUzbM99NBg/aMegPnV+gxRg6oLtFNZFsjfLhiJB+huZn1B87O7Crr/0Pnfz11vug5/9ePn+/E+2Hf++4beNHV8uzgRWWica6ejnDKiraM5oWXwhtC2CcVDo+FxfAWDfwc3Y9jLv4288cj5qG8IXU3Ie2zKj56xgXgZrNqOURhKGfR/GE6nzfNb7OMaxo=

Đầu ra là tín hiệu Z và được lấy từ các bộ giải mã trên và dưới.

Ảnh chụp màn hình


waaa ... lần đầu tiên tôi từng thấy một câu trả lời nhân tố trong ppcg xD
V. Courtois


6

Thạch , 8 7 byte

Vf96SạP

Đầu vào là một mảng gồm hai số nguyên: đầu tiên là toán hạng bên phải, sau đó là một bên trái.

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

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

Vf96SạP  Main link. Argument: [b, a]

V        Cast [b, a] to string, then eval the resulting string.
         For [b, a] = [9, 6], this yields 96.
 f96     Filter with 96, yielding [96] if V returned 96, [] otherwise.
    S    Take the sum, yielding either 96 or 0.
      P  Compute the product of [b, a], yielding ba = ab.
     ạ   Compute the absolute difference of the results to both sides.
         When the sum is 0, this simply yields the product.
         However, when [b, a] = [9, 6], this yields 96 - 54 = 42.

Điều này có -1 độ tự do. Làm thế nào để những sự trùng hợp này thậm chí xảy ra với bạn?
lirtosiast

5

Factorio, 581 byte, 3 tổ hợp với 4 kết nối

Chuỗi kế hoạch chi tiết (0.16.36):

0eNqllNtu4jAQht9lLldmldNCFWkvto/RCkUhGWAkYkfOGDVCefeOnV1Km7ACemPJ9vibf04+webgsLWkGfITUGV0B/nrCTra6fLgz7hvEXIgxgYU6LLxO2/HpeZFZZoN6ZKNhUEB6RrfII+HtQLUTEw44sKmL7RrNmjF4AyqsaIa7SVHQWs6eWq0dy+46OcvBT3ki1hc1GSxGi8T5XWwNYdig/vySPJYXvxFFnJXB0znT7dkOy4mYR3JspOTs6DRYoFHtD3vSe98XP/CFZ9xtsqe0mW29KdNW9qgOYffgjCOW3eHk+eR3fai1WkuttY0BWlhQM7W4TC61mPAIYzYLxbry6yS7FKxJFs54rANFdhZRP3VMBnWQk08ZvZ+ChpExqSCyX9bYVLCRfxRwbmabenAaK+03rX0/RnT5z7VJbroQnUH7HkGlq7OsDFtc8WYzWJ8WxbTs4rSEu8bZKpuGoXopkn4gH5vGEKiO/SMO5vbtCgDEjTCjwcm5AWGO4ZgknX16Tq7OhRfHiZXypU91PTRd6ZYdIjo8PnmF3+1AvmfuuBq+bRKYmnWKM2G4R1hAPnz

Bộ kết hợp không đổi phía dưới bên trái nên được đặt thành đầu ra A và B làm đầu vào. Đầu ra là tín hiệu Z từ tổ hợp số học dưới cùng bên phải.

nhập mô tả hình ảnh ở đây

Top left: 2147483640 A, 2147483637 B
Top right: If everything = 2147483646 output B, input count
Bottom left: (input) A, (input) B
Bottom right: A * B -> Z

5

MATL , 11 byte

[BE]=?42}Gp

Đầu vào là một mảng với hai số.

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

Giải trình

[BE]    % Push array [6, 9]
=       % Implicit input: array of two numbers. Compare with [6, 9] element-wise
?       % If the two entries are true
  42    %   Push 42
}       % Else
  G     %   Push input
  p     %   Product of array
        % Implicit end. Implicit display

4

GW-BASIC , 55 byte

1INPUT A:INPUT B
2IF A=6THEN IF B=9THEN ?"42":END
3?A*B

Đầu ra:

đầu ra

Máy đầu tiên tại pcjs có IBM BASIC, thực tế là điều tương tự. Để kiểm tra điều này, hãy đi tới đó, nhấn Runvào máy, Bấm Enter- Entervà gõ BASICAđể vào chế độ BASIC. Sau đó nhập mã nguồn (nó sẽ tự động in đẹp cho bạn), nhập RUN, nhập hai số nguyên và hoàn tất!


3
Bạn có chắc là bytecount là chính xác? GW-BASIC sử dụng một mã hóa trong đó một số từ, như INPUT, được mã hóa bằng ít byte hơn các ký tự tạo ra chúng sẽ gợi ý. Số lượng do đó có vẻ cao đối với tôi.

@ ais523 Chà, tôi đã chạy nó wcvà tôi đã nhận được 55 ... Sao chép vào trình giả lập của mình và nó có hành vi như mong đợi.
MD XF

3
Đúng vậy, quan điểm của tôi là bạn có thể chấm điểm bài nộp của bạn cao hơn mức cần thiết. Nhận GW-BASIC để lưu tệp, sau đó xem kích thước của tệp kết quả trên đĩa; nó nên nhỏ hơn

@ ais523 Được lưu dưới dạng OUT.BAS: i.stack.imgur.com/32eH1.png Bytecount là giá trị trung bình.
MD XF

OK, tôi không mong đợi điều đó, nhưng tôi đoán đó là một sự tẩy rửa trong tình huống này. (Hoặc có lẽ có nhiều hơn một định dạng lưu?)


4

Kiểm tra , 34 33 byte

.:+&>#v
#>42#v#9-!\>6-!*?
 d* ##p

Kiểm tra là esolang mới của tôi. Nó sử dụng kết hợp ngữ nghĩa 2D và 1D.

Đầu vào là hai số được truyền qua các đối số dòng lệnh.

Giải trình

Ngăn xếp bắt đầu với các đối số dòng lệnh trên nó. Hãy gọi các đối số ab.

Phần đầu tiên .:+&, về cơ bản nhân đôi ngăn xếp, để lại như là a, b, a, b. >đẩy 0 đến ngăn xếp (nó là một phần của chữ số hoàn thành bởi 9).

#chuyển sang ngữ nghĩa 2D và vchuyển hướng IP xuống dưới. IP ngay lập tức chạy vào a #, chuyển trở lại ngữ nghĩa 1D một lần nữa.

9-!kiểm tra xem bcó bằng 9 hay không (bằng cách trừ 9 và lấy logic KHÔNG). \>6-!sau đó kiểm tra xem acó bằng 6. Ngăn xếp bây giờ chứa a, b, 1, 1if và only if b==9a==6. Nhân với *lấy logic logic của hai giá trị này, đưa ra a, b, 1nếu đầu vào là 69, và a, b, 0nếu không.

Sau này, IP chạy vào a ?. Điều này sẽ chuyển sang chế độ 2D nếu giá trị ngăn xếp trên cùng là khác không và nếu không sẽ tiếp tục ở chế độ 1D.

Nếu giá trị ngăn xếp trên cùng là 1, điều này có nghĩa là các giá trị ngăn xếp khác là 69, vì vậy chúng tôi đẩy 42 đến ngăn xếp >42và sau đó di chuyển xuống thứ hai #trên dòng cuối cùng.

Nếu giá trị ngăn xếp trên cùng là 0, thì thực thi sẽ chuyển xuống dòng tiếp theo. dloại bỏ 0(như ?không làm như vậy), và sau đó chúng tôi nhân hai đầu vào với *. Các ##công tắc trong và ngoài chế độ 2D, không làm gì cả.

Các chi nhánh đã tham gia trở lại. Các ngăn xếp có chứa 6, 9, 1, 42, hoặc a*b. pin giá trị ngăn xếp trên cùng và sau đó chương trình kết thúc, loại bỏ phần còn lại của ngăn xếp.


Đây trông giống như một ngôn ngữ tiện lợi!
Không phải là một cái cây


3

Python 3 , 36 33 byte

lambda x,y:42if x==6==y-3else x*y

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


1
Phiên bản thay thế, cùng kích thước : lambda x:x[0]*x[1]if x!=(6,9)else 42. Sự khác biệt duy nhất là loại đầu vào.
sĩ523

Nevermind - phiên bản chỉnh sửa của bạn ngắn hơn :)
musicman523

Mã bạn đã đăng không thực sự hoạt động, vì vậy tôi đã chuyển nó sang phiên bản hoạt động trên TIO mà bạn đã liên kết.
Sản phẩm ETH

Nó hoạt động với tôi: Trong [1]: f = lambda x, y: 42if 6 == x == y-3else x * y Trong [2]: f (6,9) Out [2]: 42 Trong [3 ]: f (9,6) Hết [3]: 54 @ETHproductions
Martmists

@Martmists Bạn đã bị thiếu một khoảng trống sau đó, bởi vì mã của bạn làf=lambda x,y:42if6==x==y-3else x*y
ETHproductions

3

APL (Dyalog) , 10 byte

×-12×6 9≡,

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

× sản phẩm (của các đối số)

- dấu trừ

12× mười hai lần

6 9≡ liệu (6,9) có giống với

, sự kết hợp (của các đối số)


Ôi chà, tôi vừa thấy cái này và câu trả lời J của tôi giống hệt như thế này: / ngoại trừ một byte dài hơn
Conor O'Brien

@ ConorO'Brien Có ý nghĩa. AP và JL ngầm là tương đương nhau, tiết kiệm cho các nguyên thủy đa char của J (và cần Cap cho một đỉnh cuối cùng).
Adám

3

R, 41 Tôi nghĩ rằng tôi không biết cách đếm byte Tôi là người mới: D

function(a,b){

if(a==6&b==9){42} else {a*b}

}

Tôi xác định một chức năng có các đối số là a và b theo thứ tự này . Nếu a bằng 6 và b bằng 9, nó trả về 42, nếu không, một lần b


Chào mừng đến với trang web! :)
DJMcMayhem

Chào mừng bạn Hãy tính đến việc các dòng mới và không gian cũng được tính. Trong trường hợp của bạn, nếu bạn xóa dòng mới và dấu cách (mà bạn có thể) thì chỉ có 41.
Masclins

1
Bạn có thể cắt hai byte bằng cách sử dụngifelse(a==6&b==9,42,a*b)
Masclins

Bạn có thể cắt toàn bộ xuống còn 33 byte như function(a,b)`if`(a-6|b-9,a*b,42).
rturnbull

Đây chỉ là 41 byte sau khi bạn loại bỏ khoảng trắng không cần thiết, cho đến khi đó là 47 byte.
Pavel

3

SPL , 356 byte

a.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:Listen to your heart!Puck:Listen to your heart!Are you as big as the sum of a big big big cat and a cat?If so, am I as big as the sum of a big big cat and a big cat?If so, you are as big as the product of I and the sum of I and a cat.If not, you are as big as the product of you and I.Open your heart

Với dòng mới và không gian:

a.                       *Title*
Ajax,.                   *Declare variable Ajax*
Puck,.                   *Declare variable Puck*
Act I:.
Scene I:.
[Enter Ajax and Puck]
Ajax: Listen to your heart!                  *Set Puck's value to user input*
Puck: Listen to your heart!                  *Set Ajax's value to user input*
      Are you as big as the sum of a big 
       big big cat and a cat?                *Is Ajax=9?* 
      If so, am I as big as the sum of a 
       big big cat and a big cat?            *Is Puck=6?* 
      If so, you are as big as the product 
       of I and the sum of I and a cat.      *If so, set Ajax=42* 
      If not, you are as big as the product 
       of you and I.                         *If not set Ajax=(Ajax)(Puck)*
      Open your heart                        *Print Ajax's value*


3

ML chuẩn (MLton) , 22 20 byte

Đã lưu 2 byte nhờ @Laikoni!

fun$6 $9=42| $x y=x*y

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

Đây là loại SML có nghĩa là gì, đó là lý do tại sao nó đánh bại shortC và Python.

Các phiên bản cũ trông đẹp hơn nhiều. : P



@Laikoni Wow, tôi không biết bạn có thể sử dụng $làm định danh! Tại sao điều này không biên dịch nếu bạn loại bỏ khoảng trắng giữa |$?
sĩ523

SML phân biệt chữbiểu tượng nhận dạng, trong đó có thể khá tiện dụng cho chơi golf. |$được phân tích cú pháp như một định danh tượng trưng duy nhất, vì vậy mọi thứ đều bị phá vỡ. Tôi dự định sớm viết một câu hỏi mẹo cho SML và thêm câu trả lời về hai loại định danh này.
Laikoni

2

Bình thường, 12 byte

-*FQ*12q(6 9

Dùng thử trực tuyến

Giải trình

 -*FQ*12q(6 9
  *FQ             Take the product
        q(6 9)Q   Check if the (implicit) input is (6, 9)
 -   *12          If so, subtract 12

Giải pháp thông minh. Tôi đã thử nó với các tuyên bố tạm thời trong 15:AQ?&q6Gq9G42*GH
Tornado547


2

Thạch , 10 byte

⁼6,9ȧ42ȯ⁸P

Một liên kết đơn âm lấy một danh sách của hai số.

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

Làm sao?

⁼6,9ȧ42ȯ⁸P - Link: list of numbers [a,b]
 6,9       - 6 paired with 9, [6,9]
⁼          - equals? (non-vectorising) (1 or 0)
     42    - literal answer, 42
    ȧ      - logical and               (42 or 0)
        ⁸  - link's left argument, [a,b]
       ȯ   - logical or                (42 or [a,b])
         P - product                   (42 or a*b)

Bạn có thể đã sử dụng ?, như tôi đã làm. ;)
Erik the Outgolfer

Ah bởi vì ,nó đặc biệt ở chỗ nó là một phần của mẫu regex theo nghĩa đen, vì vậy 6,9được phân tích cú pháp dưới dạng một mã thông báo duy nhất và nhanh chóng $có thể kết hợp nó với . Bạn có lý do đó, hoặc chỉ cần thử nó và nhận thấy rằng nó hoạt động?
Jonathan Allan

1
Tôi đã lý luận rằng.
Erik the Outgolfer


2

Silos , 81 67 byte

readIO
J=i
readIO
a=(J-6)^2+(i-9)^2
a/a
a-1
a*12
x=J*i+a
printInt x

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

Trong một số ý nghĩa, chức năng bổ sung như một cổng NAND thú vị trong SILOS.

-14 byte nhờ @Leaky Nun

Về cơ bản, chúng tôi tạo một số "a" bằng 0 (giả) iff j là 6 và i = 9, sau đó chúng tôi chia nó bằng cách trừ đi một và nhân nó với 12 để thêm vào sản phẩm của chúng tôi.

Nếu "a" là 1 sau khi trừ đi một và nhân, nó sẽ trở thành số không, tuy nhiên trong trường hợp a là 0, 0/0 sẽ âm thầm ném một lỗi (được tự động bắt một cách kỳ diệu) a trở thành 0, và sau đó trở thành 0 -1 và cuối cùng chúng tôi trừ 12 từ sản phẩm của chúng tôi.




@LeakyNun ooh, thật thông minh.
Rohan Jhunjhunwala

Thật ra, 0/0trở thành 0.
Rò rỉ Nun

@LeakyNun Ý tôi là nói trở thành 0, rồi giảm dần. Sửa chữa.
Rohan Jhunjhunwala


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.