신용
이 코드 골프 도전에 영감을 준 Rand Al'Thor의 편지 기반 질문 에 감사드립니다 .
배경
이 도전의 본질은 Rand가 그의 "세 글자로 구성된 삼각형"에서 언급 한 알고리즘을 기반으로합니다.
- X, Y 또는 Z 인 10 개의 문자 시퀀스로 시작하십시오.
- 각 행에서 다음과 같이 다음 행을 구성하십시오. 인접한 두 글자가 같으면 그 아래에 같은 글자를 쓰십시오. 다른 경우에는 그 아래에 세 번째 글자를 쓰십시오.
그런 다음 열 번째 문자에 한 글자가 나타날 때까지 이전 단계를 반복합니다.
도전
위 알고리즘에 수학적 스핀을 넣을 것입니다.
- 공백으로 구분되고 각각 1, 2 또는 3 인 10 자리 시퀀스로 시작해 봅시다.
- 각 행에서 다음과 같이 다음 행을 구성하십시오. 인접한 두 자리가 같은 경우 그 아래에 같은 자리를 쓰십시오. 다른 경우 그 아래에 세 번째 숫자를 쓰십시오.
- 최종 번호가 하나가 될 때까지 이전 단계를 반복하십시오.
따라서이 알고리즘에 따라 행으로 시작하면 1 2 3 3 1 3 1 3 1 2
예를 들어 다음 삼각형이 생성됩니다.
Input: 1 2 3 3 1 3 1 3 1 2
Output:
1 2 3 3 1 3 1 3 1 2
3 1 3 2 2 2 2 2 3
2 2 1 2 2 2 2 1
2 3 3 2 2 2 3
1 3 1 2 2 1
2 2 3 2 3
2 1 1 1
3 1 1
2 1
3
또한 숫자 삼각형의 모든 자릿수의 합계를 알고 싶습니다.이 숫자를 모두 더한 다음이 열을 11 번째 행에 놓고 첫 번째 행의 마지막 숫자에 오른쪽 정렬하십시오. 따라서 우리의 숫자 삼각형은 다음과 같습니다 (제 예에서 공백은 .
문자로 아래에 표시되어 형식을 나타냅니다).
Input: 1 2 3 3 1 3 1 3 1 2
Output:
1.2.3.3.1.3.1.3.1.2
.3.1.3.2.2.2.2.2.3.
..2.2.1.2.2.2.2.1..
...2.3.3.2.2.2.3...
....1.3.1.2.2.1....
.....2.2.3.2.3.....
......2.1.1.1......
.......3.1.1.......
........2.1........
.........3.........
................109
입력 한 문자열 / 배열 등으로 시작할 수있는 코드를 작성하는 것이 어렵습니다. 내 예제에 따라 10 자리 숫자로 만든 다음 알고리즘을 적용하여 숫자 삼각형을 만드는 10 개의 행을 생성 한 다음 11 번째 행은 오른쪽 자리 맞춤으로 모든 자릿수의 합계를 표시합니다.
테스팅
이 문자열의 테스트는 무작위로 생성 한 10 자리 숫자의 문자열 또는 아래 스 니펫에서 생성 된 문자열로 수행 할 수 있습니다.
c1=()=>('1331123221'+(Math.random()*(1<<24)|0).toString(4)).replace(/0/g, "").slice(-10).split("").join(" ");
$("#btn").click(function(){
$("#str").val(c1());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="str"><button id="btn">Get numbers</button>
<br>
Please use this snippet to generate a starting row for testing your code. Alternatively, you can also use a string of your choice, so long as it's ten digits (ranging from 1 to 3), separated by single spaces.
규칙
- 코드 골프 규칙이 적용되므로 가장 적은 수의 바이트가 문제를 해결합니다. 낮은 점수를 가진 두 항목이있는 경우, 투표 수에 따라 우승자가 수여됩니다.
- 우리가 기본적으로 수행 한 것은 11 행, 19 자 길이입니다 ... 최종 출력을 렌더링하는 방법은 전적으로 귀하에게 달려 있습니다 : 배열, 콘솔, 파일 출력, STDOUT 등 원하는 출력 방법을 사용하십시오. 당신의 이익을 위해 일하십시오. 출력의 유일한 규칙은 위와 비슷한 형식으로 각 행에 19 개의 문자가있는 11 개의 행이 있다는 것입니다 ...
- 코드에 도움이된다면 숫자 구분 기호를 사용하십시오 ... 가독성이 기여 요인 일 수 있음을 기억하십시오.
- 바보 같은 허점이 없습니다 .
- 입력의 하드 코딩은 허용되지 않습니다. 이 코드의 목적은 다양한 입력으로 매번 다른 결과를 생성하는 데 사용될 수 있도록하는 것입니다.
1 1 1 1 1 1 1 1 1 1
예를 들어 하드 코딩은 알고리즘의 요점을 완전히 무효화합니다.
당신이 할 수있는 것을 기대해주세요!