모든 N 번째 N 제거


41

작업

이 도전에서, 당신의 입력은 당신의 언어의 기본 형식으로 주어진, 양의 정수의 비어 있지 않은 목록입니다. 출력은 일부 요소가 제거 된 동일한 형식의 동일한 목록입니다. 모든 발생 1, 두 2번째 발생 3, 세 번째 발생 등을 제거해야합니다. 일반적으로 모든 양의 정수 N에 대해 세 N번째 발생 N부터 시작하여 목록에서 모든 발생을 제거해야합니다 N.

입력 목록을 고려하십시오

[3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2]

먼저 다음과 같은 모든 항목을 제거합니다 1.

[3,2,6,    6,2,3,2,6,6,6,6,  6,6,3,3,7,2]

그런 다음 두 번째 발생 2:

[3,2,6,    6,  3,2,6,6,6,6,  6,6,3,3,7  ]

그런 다음 세 번째 발생마다 3:

[3,2,6,    6,  3,2,6,6,6,6,  6,6,  3,7  ]

숫자는 45가 생략 될 수 있도록 입력 발생하지 않습니다. 다음으로, 우리는 여섯 번째 발생마다 제거합니다 6.

[3,2,6,    6,  3,2,6,6,6,    6,6,  3,7  ]

한 번만 발생 7하므로 건너 뛸 수 있습니다. 따라서 올바른 출력은

[3,2,6,6,3,2,6,6,6,6,6,3,7]

규칙과 득점

전체 프로그램이나 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점은 허용되지 않습니다.

테스트 사례

[1] -> []
[2] -> [2]
[1,1,1] -> []
[2,2,2] -> [2,2]
[1,1,2,2,2,3,3,3,3] -> [2,2,3,3,3]
[1,2,3,1,2,3,1,2,3,1,2,3] -> [2,3,3,2,3]
[3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2] -> [3,2,6,6,3,2,6,6,6,6,6,3,7]
[5,4,5,4,3,5,4,5,4,5,4,3,5,4,5,3,3,3,4,5,4,5,4,5,4,3,3,3,5,4] -> [5,4,5,4,3,5,4,5,4,3,5,4,5,3,3,4,5,5,4,4,3,3,5,4]
[6,4,5,8,2,9,3,1,8,5,3,5,5,6,3,5,1,2,3,9,3,5,8,7,5,9,1,3,4,8,2,3,4,7,8,5,8,5,3,1] -> [6,4,5,8,2,9,3,8,5,3,5,5,6,3,9,3,5,8,7,5,9,4,8,2,3,4,7,8,5,8,5,3]
[4,4,9,12,9,4,4,4,12,9,12,9,12,4,12,4,4,9,4,9,12,4,12,4,4,12,4,4,9,12,9,12,9,4,9,12,4,9,12,9,12,9,4,9,12,12,4,4,12,4] -> [4,4,9,12,9,4,4,12,9,12,9,12,4,12,4,9,4,9,12,4,12,4,12,4,4,9,12,9,12,4,9,12,9,9,12,9,4,9,12,12,4,4,12]
[2,2,11,11,11,11,6,2,2,6,6,2,2,2,2,6,11,6,11,11,2,11,2,6,6,11,2,11,6,2,6,6,6,6,6,11,2,11,11,6,6,6,11,6,2,6,2,6,6,2,11,2,2,11,11,11,11,2,6,2] -> [2,11,11,11,11,6,2,6,6,2,2,6,11,6,11,11,2,11,6,11,2,11,6,6,6,6,6,2,11,11,6,6,6,11,6,2,6,6,11,2,11,11,11,11,2,6]
[20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102] -> [20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,101,102,20,21,22,100,102,20,21,22,100,101,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102]

리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다. 답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

## Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

## Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함 시키려면 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

## Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들어 리더 보드 스 니펫에 표시 될 수도 있습니다.

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

답변:


15

젤리 , 10 8 바이트

=;\S€%af

2 바이트로 골프를 치는 @ Sp3000에 감사합니다!

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

작동 원리

=;\S€%af    Main link. Input: A (list)

 ;\         Compute the cumulative concatenations of the elements of A, i.e., the
            list of A's prefixes.
=           Compare the elements of the nth prefix with the nth element of A.
   S€       Compute the sum of the resulting arrays.
     %      Take the nth sum modulo the nth element of A.
      a     Logical AND; replace the nth remainder with the nth element of A
            if the remainder is non-zero.
        f   Filter; remove the zeroes (which do not occur in A) from the result.

그 비교 단계는 어떻게 작동합니까? [5,4,3,2,1] [[5], [5,4], [5,4,3], [5,4,3,2], [5,4의 접두사입니다. 3,2,1]] 또는 [[1], [2,1], [3,2,1], [4,3,2,1], [5,4,3,2,1]]?
quintopia

@quintopia Jelly는 왼쪽에서 오른쪽이므로 첫 번째입니다. =정수를 비교합니다. 예를 들어, [3,2,1]=;\비교 3의 요소 [3], 2의 사람과 [3, 2]1의 사람들과 [3, 2, 1]제공 [1, [0, 1], [0, 0, 1]].
Dennis

아 목록을 목록별로 비교하는 것이 누락되었습니다.
quintopia

34

awk, 10 바이트

STDIN에서 한 줄에 하나씩 숫자가 입력됩니다.

++a[$1]%$1

설명

연관 배열에서 각 숫자에 대한 카운터를 유지하고 카운터 값 모듈로 n가 0이 아닌 경우에만 인쇄 합니다. 인쇄는 암시 적입니다. 긴 버전 :

++a[$1]%$1{print $0}

19

Pyth, 18 15 14 10 9 바이트

f%/aYTTTQ

나는 이것이 9 바이트에서 5 개의 연속 변수 참조를 가진 내가 작성한 첫 번째 코드라고 생각합니다.

배열 조작 솔루션 ( u.DG%HgxHGH{QQ, 14 바이트)이 그리 길지 않기를 바랍니다 .

f%/aYTTTQ       Implicit: Q=input
                 lambda T:
    Y              Variable: starts as empty list.
   a T             Append T to Y. Mutates Y.
  /   T           Number of elts of Y that equal T.
 %     T         Modulo by T
f       Q       Filter that lambda over Q.

여기서 사용해보십시오 .


9

파이썬, 57 바이트

lambda l:[n for i,n in enumerate(l)if l[:i+1].count(n)%n]

8

펄 6 , 28 바이트

{$_=$;grep {++.{$^n}%$n},@_} # 28 bytes
{
  $_=$;        # put $_ in a clean state
  grep {
    ++.{$^n}   # increment $_{ $n } and declare $n as an argument
    % $n       # check if the count is not divisible by $n
  }, @_        # the input
}

용법:

# give it a lexical name for ease of use
my &code = {...}

sub check ( @a, @b ){
  say try { so all code(@a) »==« @b } // False
}

check [1], []; # True
check [2], [2]; # True
check [1,1,1], []; # True
check [2,2,2], [2,2]; # True
check [1,1,2,2,2,3,3,3,3], [2,2,3,3,3]; # True
check [1,2,3,1,2,3,1,2,3,1,2,3], [2,3,3,2,3]; # True
check [3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2], [3,2,6,6,3,2,6,6,6,6,6,3,7]; # True

올바른 요소가 튀어 나왔는지 다시 확인하십시오.

# have to change it to a pure number
# when checking $_         V
my &code = {$_=$;grep {++.{+$^n}%$n},@_}
# only matters here because we are using
# a subclass of Int but want it to use
# the same key as a normal Int

sub F ( Int $v ) { IntStr.new: $v, "Fail($v)" }
# prove that it passes through unchanged
say [F(2)];
# (Fail(2))

say code [3,2,6,F(1),F(1),6,F(2),3,2,6,6,6,F(6),F(1),6,6,F(3),3,7,F(2)];
# (3 2 6 6 3 2 6 6 6 6 6 3 7)

7

진심으로, 22 17 바이트

k╗,;`;;╜o;╗c%`M@░

육각 덤프 :

6bbb2c3b603b3bbd6f3bbb6325604d40b0

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

설명:

k╗                                Put empty list in reg0
  ,;                              Two copies of input
    `        `M                   Map over the list
     ;;                           Make 2 extra copies of n
       ╜o                         Load reg0 and push the n onto it
         ;╗                       Put a copy back in reg0
           c                      Count the number of copies of n in the list
            %                     Take the result modulo n
               @░                 Filter the original list with the resulting list

10
이 언어는 ...
Nico

6

자바 스크립트 ES6, 34 바이트

a=>a.filter(v=>f[v]=-~f[v]%v,f=[])

Brad의 Perl 알고리즘과 동일한 것으로 판명되었습니다.

편집 : @ edc65 덕분에 2 바이트가 절약되었습니다.


좋은! 내부 괄호를 제거하여 2 바이트 절약a=>a.filter(v=>f[v]=-~f[v]%v,f=[])
edc65

5

Mathematica, 40 38 36 바이트

Select[(f@#=#)&/@#,++f[#]~Mod~#>0&]&

이것은 명명되지 않은 함수이며을 반환합니다 List. f실행될 때 이름이 지정된 함수를 정의 하지만 (숫자를 추적하기 위해) f사전에 관련 정의를 재설정 합니다.

설명

Mathematica에서 함수 (또는 함수 정의)가 작동하는 방식은 정말 강력합니다. 예를 들어 Haskell에서와 같이 함수는 특정 유형뿐만 아니라 개별 값 (또는 실제로 임의의 인수 패턴)에 대해 오버로드 및 정의 될 수 없습니다. 그러나 a) 제어 흐름 동안 이러한 값을 부작용으로 정의 할 수 있고 b) 언제든지 값을 다시 정의 할 수 있다는 점에서 Haskell보다 훨씬 강력합니다. 즉, 함수는 실제로 매우 강력한 조회 테이블입니다 (선택적으로 조회 하는 대신 조회 된 값을 계산할 수 있음).

코드에서 golfitude를 제거하면 다음과 같이 보일 것입니다.

g[list_] := (
  Map[
    (f[#] = #) &,
    list
  ];
  Select[
    list,
    Mod[++f[#], #] > 0 &
  ]
)

먼저 입력을 반복 하고 목록의 f[x] = x모든 것을 정의 x합니다. f궁극적으로 각 번호가 목록에 얼마나 자주 나타나는지 추적하는 데 사용됩니다. 우리는 왜 계산하지 0않습니까? 목록의 루프는 Map입니다. 함수 정의 저장 외에 표현식이 f[x] = y리턴 y됩니다. 그래서 설정 f[x]x지도가 입력리스트 자체 평가합니다. 두 바이트를 절약 할 수 있으므로 list명시 적으로 다시 제공 할 필요가 없습니다 Select. x대신에 시작해 0도 관심이 있기 때문에 계산에 전혀 영향을 미치지 않습니다 Mod[f[x], x].

(일반적으로 우리는 단순히을 f[_] = 0피하기 위해 대체 정의 와 같은 것을 사용할 수 Map있지만 함수가 이전에 사용되었는지 여부를 알 수 없으므로 계산에 혼란을 줄 수있는 이전 값이 정의되어 있습니다.)

그런 다음 Select명명되지 않은 함수가 두 번째 인수로 전달되는 요소 만 유지하여 목록을 필터링합니다 True. 즉, 함수 단위의 값 f[x](단, x현재리스트 요소이다)의 발생을 계산하고 그 결과 카운트 모듈을 얻어 위하여 x. 우리는 이것이 생성되는 모든 요소를 ​​버리고 싶습니다 0.


5

CJam, 17 바이트

Lq~{:X+_Xe=X%},p;

이길 ... J? 이 도전에 대한 나의 기대가 무엇인지 확실하지 않습니다. 참고 ""는 하늘의 배열 CJam의 표현입니다.

온라인으로 사용해보십시오 | 테스트 스위트 (마지막 케이스가 영구 링크에 비해 너무 깁니다)

설명

L                     Push empty array (let's call it L)
 q~                   Push input and evaluate

   {         },       Filter the array elements by...
    :X                   Save number to variable X
      +                  Append to L

       _                 Duplicate
        Xe=              Count occurences of X
           X%            Take modulo X

                      The top element is popped to determine whether or not to keep that
                      element, with the updated L kept on the stack for the next iteration

               p      Print the resulting filtered array
                ;     Pop L, which is now equal to the input array

4

자바 스크립트 ES6, 55 바이트

a=>a.filter((v,i)=>a.filter((w,j)=>j<=i&v==w).length%v)

설명

a=>                            //a -> input array
 a.filter(                     //filter array. only keep elements if inside function returns truthy
      (v,i)=>                  //inside function to decide whether to keep items. v -> item; i -> index
           a.filter((w,j)=>    //get all ocurrences of v that occur before index i
                j<=i&v==w      //(this is done by keeping all items w at index j, if j <= i and v == w
           ).length%v          //get length (count ocurrences), and mod v.
                               //this will only be falsy if the number of ocurrences of v up to this index is divisible by v. (0 -> falsy, positive -> truthy) 
 )                             //so, we don't keep every second 2, every third 3, etc.

3

J, 18 바이트

#~((0<]|+/@:=){:)\

용법:

   (#~((0<]|+/@:=){:)\) 1 2 3 1 2 3 1 2 3 1 2 3
2 3 3 2 3

매우 간단한 방법입니다. 우리는 숫자의 발생 횟수를 세고 그 숫자가 숫자를 나눈 경우에만 숫자를 선택합니다.

자세한 설명은 나중에옵니다.

여기에서 온라인으로 사용해보십시오.


2

PowerShell, 56 바이트

param($a)$b=,0*($a|sort)[-1];$a|%{if(++$b[$_-1]%$_){$_}}

Rainer P의 답변 과 비슷한 도우미 배열을 사용합니다. .이 독립적으로 개발했지만 분명히 FGITW를 얻었습니다.

을 사용하여 입력을 배열로 param($a)받습니다. 그런 다음 $b오버로드 된 곱셈 연산자와 함께 쉼표 연산자를 사용하여 도우미 배열 을 0으로 채워진 배열 로 만듭니다 . 이 생성 $b동일하게 @(0,0,0...0)$b.length의 최대의 수와 같다 $a.
( 자세한 내용은 "Showcase your language" 답변을 위한 빠른 플러그 )

다음은 출력입니다. 입력 배열의 모든 요소를 $a|%{...}반복하고 각 루프는 if명령문을 확인합니다 . 조건부는 현재 요소와 일치하는 도우미 배열의 값을 미리 증가시킨 다음 모듈러스 연산자를 사용하여 현재 요소의 배수인지 확인합니다. 배수 인 경우 %의지와 같고 0거짓이므로 if실행되지 않습니다. 그렇지 않으면 현재 요소를 출력합니다.

암시 적 유형 변환을 활용하여 출력 형식을 저장합니다. 함수 나 프로그램이 여러 요소를 반환하고 결과를 변수에 저장하면 PowerShell은 해당 변수를 배열로 동적으로 만듭니다. 예:

PS C:\Tools\Scripts\golfing> $testc = .\remove-every-nth-n.ps1 @(2,2,2)

PS C:\Tools\Scripts\golfing> $testc
2
2

PS C:\Tools\Scripts\golfing> $testc.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------             
True     True     Object[]                                 System.Array

1

R, 110 98 99 92 바이트

function(a){for(i in 1:max(a))for(j in seq_along(b<-which(a==i)))if(j%%i<1)a[b[j]]=0;a[a>0]}

@ Alex-A 덕분에 테스트 케이스 2/3 편집 2로 7 바이트 저장으로 전체 재 작성 수정 버그 수정


1
92 바이트 :function(a){for(i in 1:max(a))for(j in seq_along(b<-which(a==i)))if(j%%i<1)a[b[j]]=0;a[a>0]}
Alex A.

1

MATL , 20 바이트

tu"t@=f@@h0h)0w(]tg)

이 사용하는 현재 릴리스 (10.2.1) 언어 / 컴파일러를.

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

설명

tu        % implicitly input array. Duplicate and get unique elements
"         % for each unique element, say "i"
  t       % duplicate
  @=f     % indices of occurrences of i
  @@h0h   % build index representing i-th occurrences (Matlab's i:i:end)
  )       % keep only indices of i-th occurrences
  0w(     % set those entries to 0
]         % end for loop
tg)       % keep nonzeros only. Implicit display


1

C #, 224 바이트

List<int>R(List<int>l,int n=1){l=l.Where(w=>w!=0&&w!=1).ToList();for(int i=0,t=0;i<l.Count;i++){if(l[i]==n&&++t==n){l[i]=0;t=0;}}return !l.Any()||n>l.Max()?l:R(l,++n);}

이 코드는 재귀를 사용합니다. 함께 using문 즉 224 바이트 (방법 코드 자체 160)이다.

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

List <int> R(List <int> l, int n = 1)
{
    l = l.Where(w => w > 1).ToList();
    for (int i = 0, t = 0; i < l.Count; i++)
    {
        if (l[i] == n && ++t == n)
        {
            l[i] = 0;
            t = 0;
        }
    }
    return !l.Any() || n > l.Max() ? l : R(l, ++n);
}

continue 문을 제거하여 몇 개의 문자를 저장할 수 있어야합니다. (테스트되지 않은) 같은 뭔가for(int i=0,t=0;i<l.Count;i++)if(l[i]==n&&++t==n)l[i]=t=0;
피터 테일러

@ 피터 테일러, 당신 말이 맞아요. 또한 버그를 수정하기 위해 코드를 추가해야했습니다.
Dmitry Stepanov

당신이 가져온 경우 System.Linq다음 !l.Any()보다 짧은 l.Count<1보다 짧은이다, l.Count==0.
피터 테일러

@ 피터 테일러 덕분에, 나는 또한 교체 w != 0 && w !=1와 함께 w > 1.
Dmitry Stepanov

배열도 좋아야하고 조금 더 짧을 것이다 int [] R (int [] l, int n = 1)
raggy

0

C #-177 바이트

void r(List<int> i){for(int c=1,k=1,m=i.Max();k<=m;k++){var n=new List<int>();foreach(var o in i)if(o==k&&c++==k)c = 1;else n.Add(o);i=n;}Console.WriteLine(string.Join(" ",i));}

언 골프

void r(List<int> i)
{
    for (int c = 1, k = 1, m = i.Max(); k <= m; k++)
    {
        var n = new List<int>();
        foreach (var o in i)
            if (o == k && c++ == k)
                c = 1;
            else
                n.Add(o);
        i = n;
    }
    Console.WriteLine(string.Join(" ", i));
}

4
using 문을 계산해야한다고 생각합니다.이 경우 길이는 241 바이트입니다.
LegionMammal978

0

수학, 63 바이트

Fold[Delete[#,Position[#,#2][[#2;;;;#2]]~Check~{}]&,#,Union@#]&

골프에 흥미있는! 가끔 나타나는 메시지를 무시하십시오.


0

루비, 120 바이트

->a{1.upto(a.max).each{|i|k=0;a.length.times.each{|j|k+=1if a[j]==i;a[j]=''if k%i==0&&a[j]==i;a[j]}};a.select{|i|i!=''}}

0

TI-BASIC, 47 바이트

Input X
For(I,1,dim(∟X
∟X(I
If fPart(sum(∟X=Ans),1,I)/Ans
Ans→L₁(1+dim(L₁
End
L₁

이것은 새로운 계산기에서 L₁초기화되고 지워진다는 사실을 사용합니다 . TI-BASIC에서 빈 목록을 표시하려고하면 오류가 발생합니다.


0

APL, 16 자

{⍵/⍨×⍵|+/¨⍵=,\⍵}

영어로:

  • ,\⍵: 벡터의 벡터는 인수의 n 번째 요소까지 접두사
  • +/¨⍵=: 접두사 벡터 당 n 번째 요소 자체와 같은 수를 계산합니다.
  • ×⍵|: mod의 부호 (즉, 나눗셈의 나머지가 0이면 0, 그렇지 않으면 1)
  • ⍵/⍨: 인수 중 mod가 0 인 요소 만 유지

0

라켓 179 바이트

(λ(l)(define m(apply max l))(let g((n 1)(c 0))(set! l(for/list((i l))(if(= i n)(begin 
(set! c(+ 1 c))(if(= 0(modulo c n))0 i))i)))(if(< n m)(g(+ 1 n)0)(filter(λ(x)(> x 0))l))))

언 골프 드 :

(define f
  (λ(l)
    (define m (apply max l))
    (let loop ((n 1) (c 0))
      (set! l (for/list ((i l))
                (if (= i n)
                    (begin
                      (set! c (+ 1 c))
                      (if (= 0 (modulo c n))
                          0 i ))                  ; replace by 0
                    i )))
      (if (< n m)
          (loop (+ 1 n) 0)
          (filter (λ(x)(> x 0)) l)                ; remove all 0s
          ))))

테스트 :

(f '[1]) 
(f '[2]) 
(f '[1 1 1]) 
(f '[2 2 2]) 
(f '[1 1 2 2 2 3 3 3 3])
(f '[1 2 3 1 2 3 1 2 3 1 2 3]) 
(f '[3 2 6 1 1 6 2 3 2 6 6 6 6 1 6 6 3 3 7 2])

산출:

'()
'(2)
'()
'(2 2)
'(2 2 3 3 3)
'(2 3 3 2 3)
'(3 2 6 6 3 2 6 6 6 6 6 3 7)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.