거의 평등 한 헤 로니아 삼각형


14

거의 Heronian 등변 삼각형 형태의 정수 길이를 갖는 삼각형이고 n-1, n그리고 n+1도 정수 영역을 갖는다. 처음 몇 가지는 :

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

퀘스트 : n트리플 을 출력하는 가장 짧은 프로그램을 생성하십시오 . (힌트 : 이것은 알려진 순서입니다).

수상자는 2014 년 5 월 2 일에 선정됩니다.


가치가있는 것은 이것이 더 널리 연구 된 Pell 방정식 중 하나와 같습니다.
피터 테일러

3
나는 downvotes를 정말로 이해하지 못한다. 이것은 매우 간단한 작업이지만 질문에 아무런 문제가 없습니다. 그러나 (왼손잡이로) 제한은 내가 본 것 중 가장 이상하고 가장 준수하기 쉬운 것 중 하나라고 말해야합니다.
Level River St

2
@steveverrill, 비록 내가 downvote하지 않았지만 무의미한 제한으로 인해 upvote하지 않기로 선택했습니다. 마감 투표도 제한 때문이라고 생각합니다. 전 세계 인구의 10 % 미만이 Kyle과 동일한 키보드 레이아웃을 사용한다고 확신합니다.
피터 테일러

2
왼손잡이 사람들이 나를 혐오하더라도 @KyleKanos 제한을 좋아했습니다
ardnew

2
@ardnew 모든 곳에서, 이것은 내가 그런 핸디 코멘트를 기대할 가능성이 가장 적은 것 중 하나입니다 : P
Digital Trauma

답변:


6

APL, 15 14 명

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

alephalpha 솔루션 과 동일한 접근 방식 이지만 수정 용어 대신 바닥을 사용합니다.

통근 연산자가 하나의 문자를 저장한다는 것을 지적한 algorithmshark 에 감사드립니다 .


1
(⍳3)문자를 저장하고 0 1 2통근을 사용하여 ⎕*⍨2+√3다른 문자를 저장하고 저장할 수 있다고 확신합니다 .
algorithmshark

@algorithmshark 그 아이디어에 감사드립니다. 불행히도 ⍳3수율이 1 2 3높으므로 1 문자 더 깁니다.
Howard

8

Mathematica, 26, 22, 16 18 자

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

약간 너무 많은 골프 : 현재 형태로는 작동하지 않습니다 ( 여기 참조 ).
Howard

5

GolfScript ( 24 21 자)

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

stdin에 입력을 취하고 stdout에 양식으로 출력을 제공합니다.

[3 4 5]

온라인 데모

시퀀스의 0 번째 요소가 [1 2 3](영역 0)이며 OEIS A003500 과 일치한다고 생각합니다. 합니다.

3 문자 절약을위한 Howard 덕분 입니다.


사용 (.).)]은 두 문자가 짧습니다. 당신이 시작하는 경우 또한, 2 4당신 대체 할 수 \;;및 추가 한 저장합니다.
Howard

@Howard, 나는 원래 0 번째 요소로 2 4취급 [3 4 5]했으며 따라서 오프셋을 악용하는 다른 방법을 발견하지 않은 것이 당황합니다. 감사.
피터 테일러

2

GNU dc , 30 19 바이트

9k3v2+?^0k1/p1+p1+p

이것은 @Howard의 APL 답변 과 동일한 트릭을 사용 하므로 단 하나의 항만 계산하면됩니다. stdin에서 n에 대한 입력을받습니다.

산출:

$ dc -e '9k3v2+?^0k1/p1+p1+p' <<< 1
3
4
5
$ dc -e '9k3v2+?^0k1/p1+p1+p' <<< 2
13
14
15
$ dc -e '9k3v2+?^0k1/p1+p1+p' <<< 3
51
52
53
$ 

1

파이썬 77

파이썬에서 상당히 장황한 구현

[(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
우리 N는 가치 로 대체해야 합니까? 프로그램은 입력을 요구하지 않습니다.
golfer9338

1

파이썬 3, 83 자

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)

이것은 재귀 솔루션을 사용하여 다음과 같은 사실을 이용합니다 ( Wikipedia 에서 인용 ).

n의 후속 값은 이전 값에 4를 곱한 다음 그 값보다 먼저 값을 빼서 찾을 수 있습니다 (52 = 4 × 14-4, 194 = 4 × 52-14 등).


1

JavaScript (ECMAScript 6)-52 자

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

fn 번째 항 을 반환 하는 재귀 함수 와 g해당하는 삼중 항을 포함하는 배열을 반환하는 함수 를 정의합니다 .

자바 스크립트-41 자

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

글로벌 변수에 저장되도록 계산할 항을 예상 x하고 트리플을 콘솔에 출력합니다.


1

CJam, 13 바이트

3,3mq))ri#if+p

CJam의 첫 번째 버전은이 문제보다 10 일이 지났지 만 사용중인 모든 기능이 이전에 존재했는지 여부는 알 수 없습니다. 어쨌든 도전은 공식적으로 종결되었으므로 ...

여기에서 테스트하십시오.

설명

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.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.