콘텐츠로 건너뛰기
Home » swift » Page 5

swift

오일러 프로젝트 62

세제곱수인 41063625(=3453)로 순열을 만들어 보면 그 중에서 56623104(=3843)와 66430125(=4053)가 또 세제곱수입니다. 실제 41063625는, 자릿수로 만든 순열 중에서 3개가 세제곱수인 가장 작은 수입니다.

그러면 자릿수로 만든 순열 중에서 5개가 세제곱수인 가장 작은 숫자는 무엇입니까?

https://euler.synap.co.kr/problem=62
더 보기 »오일러 프로젝트 62

오일러 프로젝트 61

삼각수, 사각수, 오각수 같은 다각수들은 아래의 공식으로 만들 수 있습니다.

  • 삼각수 – P3n = n * ( n + 1) / 2 >> 1, 3, 5, 10, 15, …
  • 사각수 – P4n = n * n >> 1, 4, 9, 16, 25, …
  • 오각수 – P5n = (n * ( n * 3 – 1)) / 2 > 1, 5, 12, 22, 35, …
  • 육각수 – P6n = (n * (n * 2 – 1)) > 1, 6, 15, 28, 45, …
  • 칠각수 – P7n = ((n * (n * 5 – 3)) / 2 > 1, 7, 18, 34, 55, …
  • 팔각수 – P8n = n * (n * 3 – 2) > 1, 8, 21, 40, 65, …

그런데 4자리 숫자 8128, 2882, 8281 (순서대로 각각 3, 5, 4각수)에는 재미있는 성질이 있습니다. 먼저 각 숫자들은 두 자리씩 꼬리를 물고 진행합니다. 그리고 각 숫자들은 모두 서로 다른 다각수입니다. 이런 성질을 갖는 네자리 숫자 세 개는 이들이 유일합니다. 이렇게 순환하면서 서로 다른 다각수가 되는 4자리 숫자 여섯개의 유일한 순서쌍을 찾고 그 합을 구하세요.

더 보기 »오일러 프로젝트 61

오일러 프로젝트 57

오일러 프로젝트 57 번 문제는 2의 제곱근을 연분수 형태로 전개하는 것을 단계별로 진행할 때, 각 단계를 기약분수 형태로 만들어서 분자와 분모의 숫자 자리수를 비교하는 문제이다. 일단 자리 수가 엄청나게 커지는 관계로 쉬운 문제는 아니다.
더 보기 »오일러 프로젝트 57

오일러 프로젝트 55

47이란 숫자를 골라서 뒤집은 다음 다시 원래 수에 더하면 47 + 74 = 121과 같이 대칭수(palidrome)가 됩니다. 물론 모든 숫자가 이토록 쉽게 대칭수를 만들어내지는 않습니다. 예를 들어 349의 경우에는

  • 349 + 943 = 1292
  • 1292 + 2912 = 4213
  • 4213 + 3124 = 7337

위에서 보는 것처럼 3번의 반복과정을 거쳐야 대칭수가 됩니다. 196과 같은 몇몇 숫자들은 이와 같은 과정을 아무리 반복해도 대칭수가 되지 않을 것이라고 추측되는데, 이런 수를 라이크렐 수라고 부릅니다. 아직 증명되지는 않았지만, 문제 풀이를 위해서 일단 라이크렐 수가 존재한다고 가정을 하겠습니다.

또한 1만 이하의 숫자들은 50번 미만의 반복으로 대칭수가 되든지 라이크렐 수이든지 둘 중 하나라고 합니다. 1만을 넘어서면 10677에 이르렀을 때 비로소 53번의 반복으로 4668731596684224866951378664라는 28자리의 대칭수가 만들어집니다.

그러면 1만 이하에는 몇 개의 라이크렐 수가 존재합니까?

http://euler.synap.co.kr/prob_detail.php?id=55
더 보기 »오일러 프로젝트 55

오일러 프로젝트 54

포커라는 카드 게임은 다섯 장으로 된 패의 높고 낮음에 따라 승부를 냅니다. (포커 규칙을 이미 아는 분이라면 규칙 설명 부분은 건너 뛰셔도 좋습니다.) 카드 한 장은 아래와 같은 순서대로 값이 높아집니다.

2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A

다섯장으로 이루어진 패의 계급은 낮은 것부터 높은 순서로 다음과 같습니다.

  • High Card : 가장 높은 카드의 값 비교
  • One Pair : 한 쌍이 같은 카드
  • Two Pairs: 서로 다른 두 쌍이 같은 카드
  • Three of a Kind: 세 장이 같은 카드
  • Straight : 모든 카드가 연속된 숫자 (Q, K, A, 2, 3 은 스트레이트가 아닙니다)
  • Flush : 모든 카드의 무늬가 같음
  • Full House : 세장이 같고, 또 한쌍이 같음
  • Four of a Kind : 네 장이 같은 카드
  • Royal Flush : 10, J, Q, K, A 가 무늬도 같음 (Royal Straight Flush가 아니냐고 하겠지만, Royal Straight라는 것은 없습니다.)

두 사람의 패가 같은 종류의 계급이라면, 계급을 구성하는 카드 중 높은 쪽을 쥔 사람이 이깁니다. 예를 들면 8 원페어는 5 원페어를 이깁니다. (풀하우스의 경우 Three of a Kind의 숫자를 먼저 비교하고, 원 페어의 숫자를 다시 비교) 계급을 이루는 카드 숫자까지 같으면 (둘 다 Q 원페어인 경우 등) 다른 카드를 높은 순서대로 비교해서 승부를 정합니다.

텍스트 파일 poker.txt에는 두 선수가 벌인 1,000회의 승부가 저장되어 있습니다. 한 줄에는 10장의 카드가 공백으로 분리되어 있는데, 앞의 다섯장은 1번 선수의 것이고 뒤의 다섯장은 2번 선수의 패입니다. 잘못되거나 중복된 데이터는 없으며, 무승부도 없습니다.

카드 숫자는 2, 3, …, 9, T, J, Q, K, A 로(숫자 10은 T로 표시), 무늬는 C, D, H, S로 표시되어 있습니다. 예를 들면 3C 3D 3S 9S 9D의 경우 3 풀하우스가 됩니다.

이 데이터를 분석하고 1번 선수가 이긴 횟수를 구하세요.

https://euler.synap.co.kr?problem=54
더 보기 »오일러 프로젝트 54

오일러 프로젝트 53

1, 2, 3, 4, 5 다섯 숫자 중에서 세 개를 고르는 것에는 다음과 같은 10가지 경우가 있습니다.

>> 123, 124, 125, 134, 135, 145, 234, 235, 345

조합론이라는 분야에서는 이것을 5C3 = 10 이라고 표현하며, 일반적인 식은 아래와 같습니다.

\binom{n}{r} =\frac{n!}{r!(n-r)!}

이 값은 n=23에 이르러 23C10 = 1144066으로 처음으로 백만을 넘기게 됩니다. 그렇다면 1 ≦ n ≦ 100 일 때 nCr의 값이 1백만을 넘는 경우는 모두 몇 번입니까?

http://euler.synap.co.kr/prob_detail.php?id=53
더 보기 »오일러 프로젝트 53

프로젝트 오일러 51

두자리 숫자 ▯3 의 첫번째 자리를 여러가지로 바꿨을 때 가능한 아홉가지의 결과 중에서 13, 23, 43, 53, 73, 83의 여섯개는 소수입니다. 56▯▯3의 세 번째와 4번째 자리를 동일한 숫자로 바꿔서 만들어지는 10개의 다섯자리 숫자 중에는 아래에서 보듯이 7개가 소수가 되며, 이것은 이런 식으로 7개의 소수가 만들어지는 첫번째 경우입니다. 이 소수 집단의 첫번째 수인 56003은 이런 성질을 갖는 가장 작은 소수입니다.

56003, 56113, 56333, 56443, 56663, 56773, 56993

위의 예처럼 원래의 일부를 동일한 숫자로 치환했을 때 8개의 소수 집단이 만들어지는 경우를 찾고, 그 집단에 속한 가장 작은 소수를 구하세요. 치환하는 자리는 인접하지 않아도 되고, 가장 앞부분을 치환하는 경우에는 거기에 0은 올 수 없습니다.

http://euler.synap.co.kr/prob_detail.php?id=50
더 보기 »프로젝트 오일러 51

NSImage와 이미지 표현형에 대해 – Cocoa

코코아에서 이미지를 표현하는 클래스로 기본적으로 NSImage를 쓴다. 앱킷에서 이 클래스는 다양한 기본 포맷의 이미지에 대해서 사용할 수 있고, 이미지를 로드하거나, 이미지를 그리는 등의 거의 모든 작업에서 주로 사용되는 클래스이다. 사실 NSImage는 어떤 이미지값을 감싸는 wrapper인데, 우리의 상식과는 달리 이 클래스 자체는 자신의 내부에 들어있는 이미지 데이터에 대해서 별로 아는게 없다. 어떤 이미지는 단일 이미지 내에 표현형에 따라서 여러벌의 이미징 데이터를 가지고 있는 경우가 있기 때문에, NSImage는 이러한 데이터를 담는 일종의 배열처럼 동작할 뿐이고, 실제로 렌더링되는 이미지 데이터는 이미지 표현형 객체에… 더 보기 »NSImage와 이미지 표현형에 대해 – Cocoa

AutoLayout을 코드로 정의하기 (Swift)

오토레이아웃 오토레이아웃이 도입되기 이전에도 코코아 및 코코아터치에서는 상위뷰나 윈도가 크기가 변하는 경우에 하위 뷰들의 크기가 그에 따라 어떻게 변할 것인지를 결정해주는 방법이 있었다. 흔히 spring & struts라 불리는 오토리사이징 마스크가 그것이다. 하지만 오토 리사이징 마스크는 한 가지 문제가 있는데, 그것은 오토 리사이징 마스크는 수퍼뷰와 서브뷰 둘 사이의 관계만을 정의하기 때문에 이를 따라 뷰의 크기나 위치가 움직일 때 서브 뷰 간의 레이아웃이 흐트러질 수 있는 가능성이 매우 많다는 것이다. 그리하여 예전에는 화면의 회전이나 키보드가 올라오는 등의 과정이 발생하면[^0-1] 뷰의 크기가 전환되는데… 더 보기 »AutoLayout을 코드로 정의하기 (Swift)