Hầu như các tam giác Heronia tương đương


14

Một Hầu giác đều Heronian Tam giác là một hình tam giác với độ dài số nguyên dạng n-1, nn+1cũng có diện tích số nguyên. Một số đầu tiên là:

 3,  4,  5 ->    6
13, 14, 15 ->   84
51, 52, 53 -> 1170

Nhiệm vụ : Tạo chương trình ngắn nhất tạo ra bộ nba như vậy. (Gợi ý: đây là một chuỗi đã biết).

Người chiến thắng sẽ được chọn vào ngày 2 tháng 5 năm 2014.


Đối với những gì nó có giá trị, điều này tương đương với một trong những phương trình Pell được nghiên cứu rộng rãi hơn.
Peter Taylor

3
Tôi không thực sự hiểu các downvote. Đây là một nhiệm vụ khá đơn giản nhưng tôi không thấy có vấn đề gì với câu hỏi. Nhưng tôi phải nói (với tư cách là một người thuận tay trái) rằng hạn chế là một trong những điều kỳ lạ nhất và dễ tuân thủ nhất mà tôi từng thấy.
Cấp sông St

2
@steveverrill, mặc dù tôi không downvote nhưng tôi đã chọn không upvote vì những hạn chế vô nghĩa. Tôi nghi ngờ rằng số phiếu gần cũng là do hạn chế: Tôi cá rằng ít hơn 10% dân số thế giới sử dụng bố cục bàn phím giống như Kyle.
Peter Taylor

2
tôi thích sự hạn chế @KyleKanos, mặc dù những người thuận tay trái ghê tởm tôi
ardew

2
@ardnew Trong tất cả các địa điểm, đây là một trong những điều ít có khả năng tôi mong đợi những nhận xét tay như vậy: P
Chấn thương kỹ thuật số

Câu trả lời:


6

APL, 15 14 nhà từ thiện

0 1 2+⌊⎕*⍨2+√3

Cách tiếp cận tương tự như giải pháp của alephalpha nhưng sử dụng sàn thay vì thuật ngữ điều chỉnh.

Cảm ơn bạn về thuật toán đã chỉ ra rằng toán tử đi lại lưu một char.


1
(⍳3)lưu một char 0 1 2và tôi khá chắc chắn rằng bạn có thể sử dụng Commute để tạo nó ⎕*⍨2+√3và lưu một char khác.
thuật toán

@alerskymshark Cảm ơn bạn vì những ý tưởng đó. Thật không may ⍳3năng suất 1 2 3và do đó là một char dài hơn.
Howard

8

Mathicala, 26, 22, 16 18 ký tự

{0,1,2}+⌊(2+√3)^n⌋

Một chút quá nhiều golf: nó sẽ không hoạt động trong hình thức hiện tại (xem ở đây ).
Howard

5

GolfScript ( 24 21 ký tự)

2 4@~{.4*@-}*;.(\.)]p

Đưa đầu vào vào stdin, cung cấp đầu ra cho thiết bị xuất chuẩn trong biểu mẫu

[3 4 5]

Bản demo trực tuyến

Lưu ý rằng tôi đã giả sử rằng phần tử thứ 0 của chuỗi là [1 2 3](với khu vực 0), mà tôi nghĩ là phù hợp với OEIS A003500 .

Cảm ơn Howard vì đã tiết kiệm được 3 char.


Sử dụng (.).)]là hai ký tự ngắn hơn. Hơn nữa, nếu bạn bắt đầu với 2 4bạn có thể thay thế \;với ;và tiết kiệm là một bổ sung.
Howard

@Howard, ban đầu tôi đã có 2 4và được coi [3 4 5]là yếu tố thứ 0, vì vậy tôi rất xấu hổ khi không phát hiện ra cách thay thế đó để khai thác phần bù. Cảm ơn.
Peter Taylor


1

Con trăn 77

Khá là một triển khai dài dòng trong Python

[(a-1,a,a+1)for a in(int((2+3**.5)**t+(2-3**.5)**t+.1)for t in range(N))][-1]

1
Chúng ta có nên thay thế Nbằng một giá trị? Chương trình của bạn không yêu cầu bất kỳ đầu vào.
golfer9338

1

Python 3, 83 ký tự

f=lambda t:4*f(t-1)-f(t-2)if t>2 else(4,14)[t-1];n=f(int(input()));print(n-1,n,n+1)

Điều này sử dụng một giải pháp đệ quy, lợi dụng thực tế là (trích dẫn từ Wikipedia ):

Các giá trị tiếp theo của n có thể được tìm thấy bằng cách nhân giá trị trước đó với 4, sau đó trừ đi giá trị trước đó (52 = 4 × 14 - 4, 194 = 4 × 52 - 14, v.v.)


1

JavaScript (ECMAScript 6) - 52 ký tự

f=x=>x?--x?4*f(x)-f(x-1):4:2
g=x=>[a=f(x)-1,a+1,a+2]

Xác định hàm đệ quy ftrả về số hạng thứ n và hàm gtrả về một mảng chứa bộ ba tương ứng.

JavaScript - 41 ký tự

for(a=2,b=4;--x;)b=-a+4*(a=b);[a-1,a,a+1]

Yêu cầu thuật ngữ được tính toán sẽ được lưu trữ trong biến toàn cục xvà đưa ra bộ ba cho bàn điều khiển.


1

CJam, 13 byte

3,3mq))ri#if+p

Phiên bản đầu tiên của CJam lớn hơn thử thách này 10 ngày, nhưng tôi không biết liệu tất cả các tính năng tôi đang sử dụng có hiện diện trước đó không. Dù sao thì thách thức cũng chính thức khép lại, nên ...

Kiểm tra nó ở đây.

Giải trình

3mq            e# Push √3.
   ))          e# Increment twice.
     ri        e# Read input and convert to integer.
       #       e# Raise 2+√3 to that power.
        i      e# Convert to integer, truncating the result.
         3,    e# Push [0 1 2]
           f+  e# Add the previous number to each of these.
             p e# Pretty-print the result.
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.