10 9 8 7 6 5 4 3 2 1 bản in 2016


12

Như một bước ngoặt cho thử thách của tôi tại Puzzling , mục tiêu của bạn là đầu ra 2016.

Quy tắc:

  • Bạn phải bao gồm các số 10 9 8 7 6 5 4 3 2 1theo thứ tự đó. Chúng có thể được sử dụng như các số nguyên riêng lẻ hoặc được nối với nhau (như 1098), nhưng 10có thể không được tách thành 10- không có ký tự nào có thể có mặt giữa các chữ số. Lưu ý rằng, trong một số ngôn ngữ, 10có thể không thực sự đại diện cho số nguyên 10, có thể chấp nhận được.
  • Mã của bạn không được chứa bất kỳ số nào khác hoặc các biến hoặc hằng số được xác định trước (vì vậy Ttrong Pyth không được phép, vì đó là hằng số).
  • Bạn phải tính toán 2016 bằng cách sử dụng số. Đơn giản chỉ cần xuất ra 2016mà không thực hiện bất kỳ thao tác nào trên các số được yêu cầu (ví dụ: bằng cách giải mã một chuỗi được mã hóa chỉ bao gồm các ký tự chữ cái) không được phép. Không được phép xuất ra 2016từng mảnh (như 20, sau đó 16); bạn phải có một đầu ra duy nhất bao gồm giá trị số 2016.
  • Câu trả lời hợp lệ với ít byte nhất sẽ thắng.

3
@nicael Tôi khá chắc chắn việc giải câu đố đã được thực hiện. Chúng tôi đã có một vài trong số các toán tử "chèn toán tử để giải một phương trình", nhưng chúng rất khó tìm kiếm.
Martin Ender

1
Bản sửa đổi trước đó (2) thực sự thú vị hơn. Cái mới chỉ là in chuỗi, phép tính đã được thực hiện trong câu hỏi khó hiểu của bạn ...
nicael

1
Chỉ cần một vài câu hỏi dựa trên những gì tôi có thể nhìn thấy trên các câu hỏi hiện tại: 1) Chúng ta có thể tính toán 2016và in chúng một sau khi khác hoặc không số cần tính toán là 2016 trước khi in? 2) Các chức năng có được phép không? 3) Có được phép ghép các chữ số không? ví dụ 1098(tôi giả sử có bởi các nhận xét trước đó, nhưng chỉ để xác nhận) 4) "Tính toán năm 2016 bằng cách sử dụng số nguyên" có nghĩa là chúng ta không bao giờ có thể nổi bất cứ nơi nào trong một bước trung gian? ví dụ tôi có thể căn bậc một số và làm tròn xuống?
Sp3000

1
5) Điều gì xảy ra nếu tôi có một ngôn ngữ trong đó "10" không được coi là số mười, mà là một ngôn ngữ được theo sau bởi số 0 và không có cách nào xung quanh nó? Là một ngôn ngữ như vậy bị loại? (ngôn ngữ ví dụ: Befunge) 6) Chúng ta có thể sử dụng biến số được xác định trước thay cho 10 không, ví dụ T987654321?
Sp3000

@ Sp3000 1 số 2 số 3 Có. 4 phao vẫn ổn miễn là bạn không vi phạm bất kỳ quy tắc nào khác. 5 10phải được bao gồm vì vậy bạn sẽ cần phải xử lý bằng cách nào đó. 6 Miễn là 10xuất hiện trước T.
rybo111

Câu trả lời:


22

Thạch , 17 15 14 byte

109876:54+3_21

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

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

109876:54+3_21

109876            Initialize the left argument as 109876.
      :54         Perform integer division by 54, yielding 2034.
         +3       Add 3, yielding 2037.
           _21    Subtract 21, yielding 2016.

8

Lục giác, 61 byte

Sẽ không chiến thắng, nhưng tôi chỉ muốn thực hiện một thử thách ở Hexagony.

Điều này sử dụng một phương pháp khác với các câu trả lời khác (tồi tệ hơn nhiều). Phải mất một số yếu tố của năm 2016 (2,3,6,7,8) và nhân tất cả chúng lại với nhau.

Giảm thiểu:

\109.8/7}_=\"6<}{>...$_5_4/*!@...../}3.."2\/="*=}<*...$1>"*"/

Chưa hoàn thành:

    \ 1 0 9 .
   8 / 7 } _ =
  \ " 6 < } { >
 . . . $ _ 5 _ 4
/ * ! @ . . . . .
 / } 3 . . " 2 \
  / = " * = } <
   * . . . $ 1
    > " * " /

Giải thích đến sớm;


5
" Giải thích sẽ sớm ra mắt; " Tôi nghĩ rằng chúng ta có một cách hiểu khác về "sớm". ; P
Kevin Cruijssen

1
@KevinCruijssen Rất tiếc, tôi hoàn toàn quên mất điều này. ... Và bây giờ tôi không hiểu làm thế nào nó hoạt động nữa. Tuyệt quá.
Màu xanh

5

Bình thường, 16 byte

+/109876 54-3 21

Có phân chia số nguyên, sau đó thêm (3-21).

Hãy thử nó ở đây .


4

TI-BASIC, 17 15 byte

int(109876/54-√(321

Điều này sử dụng phương pháp của @ nicael.

17 byte:

10+9*8-7+654*3-21

Giải pháp này từ Puzzling có thể được dịch trực tiếp sang TI-BASIC.


1
Cũng có giá trị trong Japt, và có lẽ một số người khác.
Sản phẩm điện tử

1
Cũng hoạt động trong PowerShell và Mathematica (Wolfram), và tôi sẽ tưởng tượng nhiều, rất nhiều người khác. Và có lẽ hoạt động trong hàng tá với sửa đổi tầm thường.
admBorkBork

Một giải pháp polyglot đáng yêu
TanMath

Nếu bạn muốn sử dụng các ngôn ngữ khác, tôi sẽ xóa wiki cộng đồng của tôi.
Addison Crump

3

Japt, 17 16 byte

Â(109876/54-321q

Tôi ghét điều này 17. Có lẽ sẽ tìm một giải pháp khác. YAYZ.

Giải trình:

  • 321q là một căn bậc hai của 321.
  • ~~ số tầng.

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



109876/54-321¬flà 15 :-D
Sản phẩm điện tử

@Eth nhưng f không hoạt động, không?
nicael

Nó nên được sửa chữa. Nhưng thông dịch viên đã ngừng bảo trì ngay bây giờ, tôi sẽ lấy lại ngay lập tức.
Sản phẩm điện tử

109876/54-321q)fbây giờ làm việc Các đề nghị khác không.
Sản phẩm điện tử



2

Haskell, 31 byte

[10,9*8*7+const 6 5..]!!4+3*2*1

Không phải là ngắn nhất, 10+9*8-7+654*3-21như đã thấy trong các câu trả lời khác hoạt động trong Haskell, nhưng một cái gì đó khác nhau.

Điều này xây dựng một danh sách bắt đầu bằng 109*8*7+6 = 510, do đó, phần bù 500dành cho các phần tử sau. Toàn bộ danh sách là [10,510,1010,1510,2010,2510 ...]. Chúng tôi chọn 4thphần tử (chỉ số dựa trên 0), tức là 2010và thêm 3*2*1 = 6. Võngà.

Tôi sử dụng const 6 5 = 6để loại bỏ những 5thứ không cần thiết.


2

Python 2, 20 byte

print 109876/54+3-21

Một lần nữa, cùng nhàm chán 2016.(740). Sử dụng thực tế là nếu bạn không có số thập phân trong biểu thức của mình, nó sẽ trả về một số nguyên.


1

> <> (cá), 18 byte

10987**r65r4*n;321

giải thích:

nhân 9 8 và 7 với nhau để lấy 504, đảo ngược ngăn xếp và đảo ngược lại ngay trước khi số 4 được thêm vào, sau đó nhân 504 và 4 để lấy 2016. Sau đó in số và kết thúc chương trình trước 3 số cuối (tôi có thể làm sau đó cũng không có sự khác biệt, nếu đó là vấn đề khôn ngoan).


1

Toán ++ , 17 byte

_(109876/54)+3-21

Trên thực tế, bản in này 2016.0. Nhưng thực sự không có cách nào để in chuỗi chính xác 2016bằng ngôn ngữ này.

Giải pháp TI-BASIC 17 byte cũng sẽ hoạt động ở đây.


1

Polyglot, 17 byte

10+9*8-7+654*3-21

Mã này, lần đầu tiên được sử dụng trong câu trả lời TI-BASIC của Thomas Kwa , cũng hoạt động trong:

  • AppleScript (chương trình đầy đủ)
  • bc (chương trình đầy đủ)
  • Math ++ (biểu thức hoặc chương trình đầy đủ)
  • Mathicala (hàm, do đó không hợp lệ)
  • Powershell (chương trình đầy đủ)
  • Japt (chương trình đầy đủ)
  • JavaScript (đầu vào bảng điều khiển, do đó không hợp lệ) Cần xác minh thứ hai
  • Perl 5 (chức năng, do đó không hợp lệ).Cần xác minh thứ hai
  • Haskell (chức năng, do đó không hợp lệ)
  • Python REPL (biểu thức, vì vậy môi trường REPL là cần thiết để có được đầu ra)

1
Và, vấn đề là gì?
nicael

@nicael Tôi --- sẽ --- đang lên kế hoạch (trừ khi Thomas Kwa muốn thêm các câu trả lời khác cho mình) để thêm tất cả các câu trả lời liên quan đến câu trả lời này (trừ TI-BASIC) mà tôi có thể tìm thấy. Được đánh dấu là Cộng đồng để những người khác có thể đóng góp.
Addison Crump

1
Tại sao nhận xét "chức năng, do đó không hợp lệ"? Các chức năng được cho phép theo mặc định.
nimi

5
Tôi không biết về các ngôn ngữ khác, nhưng 10+9*8-7+654*3-21không phải là hàm JavaScript hay hàm Perl.
Dennis

1
@ Sp3000: Ôi những thay đổi quy tắc vô hiệu này ...
nimi



1

PHP, 27 byte

<?=~~(109876/54+3-21);

(22 byte) đã quá nhàm chán,

vì vậy tôi đã sử dụng 10 đến 9 làm số riêng biệt:

<?=10*(9-8+7-6),5+4-3+2<<1;

các giải pháp khác, chủ yếu là với các mánh gian lận nhỏ:

30: <?=10**(9+8-7-6)/5+4*3+(2<<1);
30: <?=10*trim(9*8,7),6+5+4+3-2*1;
29: <?=10*trim(9*8,76),5*4-3-2+1;
31: <?=10*trim(9*8,765),4+(3*2<<1);
31: <?=10*trim(9*8,765),4*3+(2<<1);
32: <?=ceil(1098*76/54)+321+ord(~j);
33: <?=(10<<9)/876*543/M_PI*2-M_E&~1;

0

Dải ngân hà 1.6.5 , 28 25 byte

10+9*(8)7;^*6*5/4*3/2*A!1

Giải trình

10+9*                      ` perform 10*9 (leaves 90 at TOS)
     (8)7;^*               ` get rid of 8 and multiply the TOS by 7
            6*5/4*3/2*A    ` perform TOS*6/5*4/3*2 (leaves 2016 at TOS)
                       !   ` output the TOS
                        1  ` push 1 to the stack




0

C 37 byte

main(){printf("%d",109876/54+3-21);}

Cùng chủ đề như nhiều món quà.


0

VBA, 15 byte

?109876\54+3-21

(tính toán bị đánh cắp một cách bất ngờ từ Dennis )


0

JavaScript (ES6), 21 byte

f=

_=>~~(109876/54+3-21)

console.log(f())

Nếu "đếm ngược" về 0, nó có thể được thực hiện trong 19 byte.

f=
_=>109876/54+3-21|0
console.log(f())

Và, xem như bây giờ là 2017, điều đó cũng có thể được thực hiện trong 21 byte:

f=
_=>-~(109876/54+3-21)
console.log(f());

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.