홀수 확률 찾기


14

합리적인 입력 방법으로 정렬되지 않은 양의 정수 컬렉션이 주어지면 홀수 개의 홀수 요소가있는 (즉 홀수의 총계가있는) 모든 하위 컬렉션을 반환합니다.

이것은 이므로 프로그램의 바이트 수를 최소화하는 것을 목표로해야합니다.

일부 언어에는 컬렉션 (목록, 배열, 벡터 등) 만 주문했거나 중복을 허용하는 정렬되지 않은 컬렉션이 없으므로 언어 ​​선택에 관계없이 정렬 된 컬렉션을 사용할 수 있지만 중복 컬렉션을 출력해서는 안됩니다 다른 주문 (예 : [2,3][3,2]) 원하는 순서대로 출력 할 수 있습니다.

테스트 사례

[2,3,7,2] -> [[3],[7],[2,3],[2,7],[2,2,3],[2,2,7]]
[2,4,6,8] -> []
[4,9]     -> [[9],[4,9]]

2
중복 서브 컬렉션이 허용됩니까? 에서와 같이, [2, 2, 3]우리는 반환 할 수 [[2, 2, 3], [2, 3], [2, 3]]있습니까?
HyperNeutrino

1
힌트 : 이러한 집합의 합은 홀수 일 수 있습니다. 이 세트의 다른 변형은 짝수 만 가질 수 있습니다.
tuskiomi

@HyperNeutrino 아니요 한 번만 반환해야합니다
Post Rock Garf Hunter

괜찮아. 서브 컬렉션이 오름차순이어야합니까, 아니면 원래 배열에 제공된 순서대로 나열해도됩니까?
HyperNeutrino

@HyperNeutrino 순서에 관계없이 순서대로 정렬 될 수 있습니다 (이상적으로는 정렬되지 않은 컬렉션 일 것입니다. 그러나 많은 언어에는 그러한 구성이 없으므로 순서가 중요하지 않은 한 정렬 된 컬렉션은 괜찮습니다)
Post Rock Garf Hunter

답변:




3

Pyth , 10 9 8 바이트

{f%sT2yS

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

         # implicit input
       S # sort input, this way the subsets will already be sorted
      y  # all subsets
 f       # filter elements when ..
   sT    # the sum ..
  %  2   # is odd
{        # remove all duplicated elements
         # implicit output

1
{SMf%sT2y보이는 바이트를 저장합니다.
Outgolfer Erik



2

펄 6 , 50 바이트

{.combinations.grep(*.sum!%%2).unique(:as(*.Bag))}

동일한 주문 순서 조합을 필터링 Bag하기 위해 비교하기 전에 각각을 (정렬되지 않은 컬렉션) 으로 변환하여 중복 항목을 필터링합니다 . 불행히도 Bag간결한 입력 을 받아 들일 수있는 방법을 찾지 못했습니다 .


2

Brachylog , 11 바이트

o⊇ᵘ{+ḃt1&}ˢ

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

더 짧은 솔루션을 찾고 싶었지만 여기 최선을 다하겠습니다.

설명

o⊇ᵘ{+ḃt1&}ˢ    
o                                        the input, sorted
 ⊇ᵘ           Find all unique subsets of

   {    &}ˢ   Then select only those results where
    +                                          the sum
     ḃ                           the base 2 of
      t        The last digit of
       1                                               is 1.

예, 모듈로 2를 사용하여 홀수를 검사 할 수는 있었지만 이상한 접근 방식은 아닙니다.)


2

매스 매 티카 31 44 38 바이트

입력 집합의 모든 하위 집합 중에서 합 Tr이 홀수 인 하위 집합을 반환합니다 .

alephalpha 덕분에 6 바이트가 절약되었습니다.

Select[Union@Subsets@Sort@#,OddQ@*Tr]&

 Select[Union@Subsets@Sort@#,OddQ@*Tr]&[{2,3,7,2}]

{{3}, {7}, {2, 3}, {2, 7}, {2, 2, 3}, {2, 2, 7}}


공간이 뭐야?
CalculatorFeline

1
불행하게도, 이것은 사양을 충족하지 않는 {2,3}{3,2}모두 반환 (와 동일해서는 안 {2,7}하고 {7,2}).
Greg Martin

Select[Union@Subsets@Sort@#,OddQ@*Tr]&
alephalpha

1

PHP, 126 바이트

for(;++$i>>$argc<1;sort($t),$s&1?$r[join(_,$t)]=$t:0)for ($t=[],$j=$s=0;++$j<$argc;)$i>>$j&1?$s+=$t[]=$argv[$j]:0;print_r($r);

명령 행 인수에서 입력을받습니다. 온라인으로 실행 -nr하거나 사용해보십시오 .

고장

for(;++$i>>$argc<1;             # loop through subsets
    sort($t),                       # 2. sort subset
    $s&1?$r[join(_,$t)]=$t:0        # 3. if sum is odd, add subset to results
    )                               # 1. create subset:
    for ($t=[],$j=$s=0;++$j<$argc;)     # loop through elements
        $i>>$j&1?                       # if bit $j is set in $i
        $s+=$t[]=$argv[$j]:0;           # then add element to subset
print_r($r);                    # print results
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.