태그 보관물: number-theory

number-theory

모듈로 패리티 파티 . 당신의 임무는 각 항목 A i

넌 배열 주어진다 N 과 엄격히 양의 정수 , N ≥ 2 .

당신의 임무는 각 항목 A i 를 다음 에 매핑 하는 것입니다.

  • 경우 J 개조 각 홀수 J 되도록 1 ≤ N ≤ JJ ≠ 난
  • 경우 J 개조 심지어 각이다 J 되도록 1 ≤ N ≤ JJ ≠ I
  • 그렇지 않으면 0 (혼합 패리티)

옵션 A = [73, 50, 61] , 우리가있다 :

  • 50 모드 73 = 50 , 61 모드 73 = 61 → 혼합
  • 73 mod 50 = 23 , 61 mod 50 = 11 → 모두 홀수
  • 73 모드 61 = 12 , 50 모드 61 = 50 → 모두 짝수

따라서 예상 출력은 [0, 1, 2] 입니다.

규칙

  • 일관된 한 0 , 12 대신 3 가지 고유 한 값 (모든 유형)을 사용할 수 있습니다 . 챌린지에 설명 된 것을 사용하지 않는 경우 매핑을 지정하십시오 .
  • 그것에 대해 의심이 있다면, 0도 짝수 입니다.
  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다!

테스트 사례

[ 1, 2 ] --> [ 2, 1 ]
[ 3, 4 ] --> [ 1, 1 ]
[ 1, 2, 3 ] --> [ 2, 1, 0 ]
[ 4, 4, 4 ] --> [ 2, 2, 2 ]
[ 73, 50, 61 ] --> [ 0, 1, 2 ]
[ 941, 459, 533 ] --> [ 1, 0, 0 ]
[ 817, 19, 928, 177 ] --> [ 1, 2, 1, 1 ]
[ 312, 463, 336, 729, 513 ] --> [ 0, 2, 0, 0, 0 ]
[ 53, 47, 33, 87, 81, 3, 17 ] --> [ 0, 0, 0, 1, 0, 2, 0 ]


답변

파이썬 2 , 68 67 66 바이트

Xcoder
덕분에 -1 바이트 ovs 덕분에 -1 바이트

x=input()
for j in x:k=sum(i%j%2for i in x);print(k<len(x)-1)+0**k

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

대신를 반환 1,0,2합니다 0,1,2.


답변

젤리 , 9 바이트

%þœ-€0Ḃ‘Ṭ

0, 1, 2 대신 [1, 1], [0, 1], [1]을 반환합니다 . 합니다.

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

작동 원리

%þœ-€0Ḃ‘Ṭ  Main link. Argument: A (array)

%þ           Build the modulus table.
  œ-€0       Remove one 0 from each list of moduli.
      Ḃ      Take the last bit of each.
       ‘     Increment, mapping 0 and 1 to 1 and 2.
        Ṭ    Untruth; map each array to an aray of 1's at the specified indices.
             This yields:
                 [1] if the array contains only 1's (all even).
                 [0, 1] if the array contains only 2's (all odd).
                 [1, 1] if the array contains 1's and 2's.

답변

MATL , 12 바이트

!G\o~tAws1=-

이 용도 0, -1, 1대신 0, 1, 2각각.

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

설명

!    % Implicit input: row vector. Transpose into a column
G    % Push input again
\    % Modulus, element-wise with broadcast. Gives a square matrix
o    % Parity: gives 1 for odd, 0 for even
~    % Logical negate: 0 for odd, 1 for even
t    % Duplicate
A    % All: gives 1 for columns that contain only 1
w    % Swap
s    % Sum of each column
1    % Push 1
=    % Is equal? Gives 1 if the column sum was 1, 0 otherwise
-    % Subtract, element-wise. Implicit display

답변

C (GCC) , 118 (114) 97 92 91 바이트

  • 버그 수정에 대한 Peter Cordes 에게 감사합니다 .
  • 저장된 이십일이 덕분에 바이트 피터 코르을 ; 다른 출력값 매핑을 사용하도록 제안; [0 1 2] ~ [3 2 1].
  • 5 바이트를 절약했습니다. 또 다른 매핑을 사용하는 것; [0 1 2] ~ [  ].
  • 바이트를 저장했습니다. 에 골프 for(i=0;i<n;i++,putchar...를 쳤다 for(i=~0;++i<n;putchar....
i,j,r;f(A,n)int*A;{for(i=~0;++i<n;putchar(r)){for(j=r=0;j<n;j++)j-i&&(r|=1<<A[j]%A[i]%2);}}

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


답변

매스 매 티카, 57 49 48 바이트

(s=#;And@@#.Or@@#&@OddQ@Rest@Sort[s~Mod~#]&)/@#&

이것은 다음을 반환합니다.

  • False.True0 (혼합)
  • True.True1 (홀수)를
  • False.False에 대한 2 (모든 짝수)

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

약간 더 긴 대안 (49 바이트)이 있습니다.

Sign[(s=#;Tr@Mod[s~Mod~#,2]&)/@#/.Tr[1^#]-1->-1]&

이것은 다음을 반환합니다.

  • 10 (혼합)
  • -11 (홀수)를
  • 0에 대한 2 (모든 짝수)

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


답변

빨강 , 101 바이트

g: func[b][foreach n b[a: copy[]foreach m b[append a m % n % 2]sort a a: copy next a print unique a]]

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

반환 1 0혼합에, 1홀수 및 0도에 대한

g: func[b] [
    foreach n b [
        a: copy []
        foreach m b [
            append a m % n % 2
        ]
        sort a
        a: copy next a
        print unique a
    ]
]

답변

자바 스크립트 (ES6), 46 바이트

a=>a.map(A=>a.map(B=>d+=B%A%2,d=0)|!a[d+1]-!d)

-1 (짝수), 1 (홀수) 및 0 (혼합)을 반환합니다.

작동 방식 :

d축적이 될 것입니다 :

  1. 모두 모듈러스이면 0입니다. ( !a[d+1]== false, !d== 1, false - 1== -1 )
  2. 하나 개 이하 * 홀수 계수 만약 어레이의 길이보다. ( * 누산기는 자체에 대해 변조 된 요소를 포함하므로 하나의 계수도 생성됩니다 .) ( !a[d+1]== true, !d== 0, true - 0== 1 )
  3. 혼합 된 경우 배열의 길이보다 두 개 이상 짧습니다. ( !a[d+1]== false, !d== 0, false - 0== 0 )

테스트 사례 :

let f=

a=>a.map(A=>a.map(B=>d+=B%A%2,d=0)|!a[d+1]-!d)

console.log(f([ 1, 2 ] ) + ''); // [ -1, 1 ]
console.log(f([ 3, 4 ] ) + ''); // [ 1, 1 ]
console.log(f([ 1, 2, 3 ] ) + ''); // [ -1, 1, 0 ]
console.log(f([ 4, 4, 4 ] ) + ''); // [ -1, -1, -1 ]
console.log(f([ 73, 50, 61 ] ) + ''); // [ 0, 1, -1 ]
console.log(f([ 941, 459, 533 ] ) + ''); // [ 1, 0, 0 ]
console.log(f([ 817, 19, 928, 177 ] ) + ''); // [ 1, -1, 1, 1 ]
console.log(f([ 312, 463, 336, 729, 513 ] ) + ''); // [ 0, -1, 0, 0, 0 ]
console.log(f([ 53, 47, 33, 87, 81, 3, 17 ] ) + ''); // [ 0, 0, 0, 1, 0, -1, 0 ]