태그 보관물: decision-problem

decision-problem

이 관계가 소름 끼치나요? 수있는 사람의 최소 연령이됩니다. 따라서 관계에있는

이 XKCD comic 에 따르면 관계의 연령 차이가 “소름”인지 여부를 결정하는 공식이 있습니다. 이 공식은 다음과 같이 정의됩니다.

(Age/2) + 7

데이트 할 수있는 사람의 최소 연령이됩니다.

따라서 관계에있는 사람들 중 한 사람이 다른 사람의 최소 연령보다 어리면 관계가 오싹합니다.

두 사람의 나이를 감안할 때 그 관계가 소름 끼치는 지 여부를 출력 할 수 있습니까?

규칙

  1. 프로그램은 두 사람의 정수를 입력해야합니다. 관계의 두 사람의 나이입니다. 이들은 적당한 형식으로 취할 수 있습니다.

  2. 그런 다음 프로그램은 관계가 “소름”인지 (진실 = 소름)를 설명하는 진실 또는 허위 값을 출력해야합니다.

  3. 표준 허점은 허용되지 않습니다.
  4. 이 퍼즐은 코드 골프이므로 바이트 단위로 가장 짧은 소스 코드를 가진 답이 이깁니다.

테스트 사례

40, 40    - Not Creepy
18, 21    - Not Creepy
80, 32    - Creepy
15, 50    - Creepy
47, 10000 - Creepy
37, 38    - Not Creepy
22, 18    - Not Creepy


답변

젤리 , 6 바이트

H+7>ṚṀ

온라인으로 사용해보십시오!

동지와 다른 알고리즘입니다.


답변

파이썬 3 , 26 바이트

lambda x:max(x)/2+7>min(x)

온라인으로 사용해보십시오!
입력은 두 연령대가 모두 포함 된 목록입니다.


답변

05AB1E , 8 6 바이트

;7+R‹Z

온라인으로 사용해보십시오! 또는 모든 테스트를 시도

         # Implicit Input: an array of the ages
;        # Divide both ages by 2
 7+      # Add 7 to both ages
   R     # Reverse the order of the ages
         #    this makes the "minimum age" line up with the partner's actual age
    ‹    # Check for less than the input (vectorized)
     Z   # Push largest value in the list

답변

낸드 게이트, 551

Logisim으로
생성

내 다른 대답 과 같은 원리 이지만 2 바이트 부호있는 입력을 취하므로 처리 할 수 ​​있습니다 47, 10000. 모든 테스트 사례에서 작동합니다!

10000은 16 비트 중 15 개로 만 표현 될 수 있으므로 [-32768, 32768] 범위의 모든 연령대에서 작동하므로 주어진 테스트 사례에 적합하지 않습니다. 모든 음의 나이가 돌아옵니다 1.

왼쪽에 입력 (특정 순서 없음, 1 비트 상단). 오른쪽 아래에 출력됩니다.


답변

NAND 게이트, 274 262

기발한:

더 나은 :
Logisim으로
생성

왼쪽에 1 바이트 부호있는 정수로 2 개의 입력이 취해지고 1 비트가 맨 위에 오게됩니다. 출력은 왼쪽 아래에 있습니다. 여기서 진실과 거짓은 분명해야합니다.

을 제외한 모든 테스트 사례에서 작동 47, 10000하므로 기술적으로 유효한 대답은 아닙니다. 그러나 (신뢰할 수있는) 레코드가장 오래된 사람 은 122이므로 8 비트 (최대 127)는이 시점까지 가능한 모든 시나리오에서 작동합니다. 16 비트 버전을 완료하면 새로운 답변을 게시하거나이 답변을 수정해야합니까?

16 비트 버전 이 완성되었습니다!

회로의 수직 부분을 볼 수 있습니다. 첫 번째 (왼쪽부터)는 어느 입력이 더 큰지를 결정합니다. 다음 두 개는 멀티플렉서로 입력을 정렬합니다. 그런 다음 11111001네 번째 섹션에서 (-7)을 더 적은 값에 더하고이 값을 두 번 큰 입력과 비교하여 결론을 내립니다. 적 으면 관계가 오싹합니다. 비트를 두 배로 이동하므로 사용되지 않는 비트를 고려해야합니다 lesser-7. 이것은 경우 1, 다음 lesser-7부정적이고, 두 젊은 여섯보다 나이가 없다. 소름 나는 OR 게이트로 마무리합니다. 따라서 크리프 테스트 중 하나가 반환 1되면 전체 회로가 작동합니다.

만약 당신이 자세히 보면, 내가 사용하는 것을 볼 수 있습니다 일곱 하나 개의 상수 합니다 (하드 코딩 11111011및 후행 0). Logisim은 논리 게이트가 출력을 생성하기 위해 적어도 하나의 값을 입력해야하기 때문에이 작업을 수행했습니다. 그러나 상수가 사용될 때마다 두 개의 NAND 게이트 1는 상수에 관계없이 값을 보장합니다 .

-12 게이트 덕분에 !


답변

C #, 22 바이트

n=>m=>n<m/2+7|m<n/2+7;

답변

C, 29 바이트

#define f(a,b)a/2+7>b|b/2+7>a

작동 방식 :

  • #define f(a,b)f형식화되지 않은 두 개의 인수를 취하는 매크로 함수 를 정의합니다 .
  • a/2+7>b 첫 번째 나이를 2 + 7로 나눈 값이 두 번째 나이보다 큰지 확인합니다.
  • b/2+7>a 두 번째 나이를 2 + 7로 나눈 값이 첫 번째 나이보다 큰지 확인합니다.
  • 위의 값 중 하나가 참이면 1 (소름)을 반환합니다. 그렇지 않으면 0을 반환합니다 (소름 끼치 지 않음).

온라인으로 사용해보십시오!