목록에서 숫자 계수 목록 및 해당 색인


25

간단한 방법 : 입력으로 양의 정수 목록을 가져 와서 목록에서 1 기반 인덱스의 계수를 출력하십시오.

입력 정수가 {a, b, c, d, e, f, g}그렇다면 출력은 계수 연산자가 있는 {a%1, b%2, c%3, d%4, e%5, f%6, g%7}곳 이어야합니다 %.


테스트 사례 :

10  9  8  7  6  5  4  3  2  1
 0  1  2  3  1  5  4  3  2  1

8 18  6 11 14  3 15 10  6 19 12  3  7  5  5 19 12 12 14  5
0  0  0  3  4  3  1  2  6  9  1  3  7  5  5  3 12 12 14  5

1
0

1  1
0  1

답변:



9

인화점 스크립팅 언어, 73 바이트

f={l=_this;r=[];i=0;while{i<count l}do{r=r+[(l select i)%(i+1)];i=i+1};r}

전화 :

numList = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
hint format["%1\n%2", numList, numList call f];

산출:


1
이게 뭐야?
JAD

2
@JarkoDubbeldam 예. 이 게임을 통해 플레이어는 자신 만의 시나리오를 만들 수 있으며 미션 디자인을 보완하도록 설계된 게임 내 스크립팅 언어가 있습니다. 그러나 언어는 Turing-complete이기 때문에 원하는 언어로 무엇이든 할 수 있습니다.
Steadybox


7

젤리 , 2 바이트

%J

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

설명:

%J
 J List 1 .. len(input). This is results in a list of the indexes.
%  Modulo.

기본적으로 코드는 인덱스 목록으로 원래 목록을 모듈화합니다.


2
이 질문을 보자 마자 " %J저는 젤리에 있습니다. 누군가 그 대답에 답을했는지 궁금합니다 "라고 생각했습니다 . 다른 사람도 같은 생각을했다고 생각합니다 :-D

1
@ ais523 당신이 유일한 사람이라고 생각하십니까? 다시 생각 해봐!
아웃 골퍼 에릭

6

R, 24 18 바이트

pryr::f(x%%seq(x))

기능을 평가합니다.

function (x) 
x%%seq(x)

seq_along()길이가 같은 벡터를 만드는 데 사용 하는x (1)에서 시작하여, 다음 %%모듈로 응시.

seq벡터가 표시 될 때의 기본 동작 seq(along.with = x)은의 출력과 동일 seq_along(x)하지만 6 바이트 더 짧습니다.


seq(x)내가 항상 사용하고 있기 때문에 주위에 가지고있는 편리한 일 1:length(x)입니다.
Giuseppe

@ 주세페 그래, 나도 좀 놀랐어.
JAD

6

R, 27 바이트

x=scan();cat(x%%1:sum(1|x))

@Jarko 덕분에 5 바이트 절약

@Giuseppe 덕분에 4 개 추가 절약

@Taylor Scott 덕분에 2 개 더 절약했습니다

@returnbull 덕분에 2 개 더 절약


35 그것은 필요하지 않은 마지막
en을

1
' '마지막에 (공백)이 필요하지 않습니다 cat. 이것이 기본 구분자입니다
Giuseppe

2
이것을 2 바이트로 줄이면 33 바이트를 줄일 수 있습니다. x<-scan();cat(x%%1:length(x)," ")오와 몇 가지 서식 팁, 1) 코드 왼쪽에 4 칸만 있으면 제대로 들여 쓰기되고 표시됩니다 .2) <!-- language-all: lang-r -->플래그를 추가 할 수 있습니다 당신의 코드가 (작은이 예에서이 변화는하지만) 3) 당신이 언어의 이름 4 주위 brakets 필요하지 않습니다 강조) 오 될 것으로 전에 당신은 당신이 게시물에 편집을 할 때 코멘트를 할 필요가 없습니다
Taylor Scott

2
(1) 바이트를 저장하는 =대신 사용할 수 있습니다 <-. (2) 사양에 "print"가 아닌 "output"이 표시되므로을 삭제하여 cat()5 바이트를 절약 할 수 있습니다 . (3) sum(1|x)이 1 바이트보다 짧습니다 length(x).
rturnbull

5

APL (Dyalog) , 5 바이트

⍳∘≢|⊢

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

 지수

 의

 인수의 길이

| 그 계수

 논쟁 거리


"주류"언어가 매우 경제적 일 수 있다는 사실에 항상 놀랐습니다. APL과 방법은 코드 골프로 자연스럽게 보인다 : 예 (~T∊T∘.×T)/T←1↓⍳R ⍝ primes up to R또는life←{↑1 ω∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂ω} ⍝ Game of Life

@YiminRong 더 잘 할 수있는 것 : Primes to R : (⊢~∘.×⍨)1↓⍳Rand GoL (Version 16.0) : K∊⍨⊢∘⊂⌺3 3여기서 K는 상수입니다.
Adám

소수가 파인더 시도 @YiminRong 여기 !
Adám

5

Cubix , 19 바이트

;ww.1I!@s%Ow;)Sow.$

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

    ; w
    w .
1 I ! @ s % O w
; ) S o w . $ .
    . .
    . .

그것을 지켜봐

상당히 간단한 구현입니다.

  • 1 1을 스택으로 밀어 인덱스를 시작하십시오.
  • I!@ 정수 입력을 얻고 0이면 정지
  • s%Ow 인덱스 스왑, 모드, 출력 결과 및 레인 변경
  • ;) 결과 제거 및 인덱스 증가
  • Sow 32 번 푸시, 출력 공간 및 차선 변경 (o에서 아래로)
  • $O 출력을 뛰어 넘다
  • w;w범위 변경, 스택에서 32 제거 및 I입력으로 레인 변경

5

05AB1E , 2 바이트

ā%

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

ā  # Push the range(1, len(a) + 1)
 % # Mod each element in the input by the same one in this list

흥미 DgL%롭습니다. 좋은 것 같아요 .
매직 문어 Urn

@carusocomputing 나는 gL%잊어 버렸기 때문에 원래 가지고 있었다 ā.
Riley

마음이 좀 더 심층적으로 진행 ā되고 있습니까? 나는 그것을 결코 사용하지 않았다고 생각 for each하지만 그것은 묵시적이지만 암시적인 1 to n+1방식 입니까? vy<code>})vy<code>})
Magic Octopus Urn

@carusocomputing은 값이 1 인 배열을 팝된 배열의 길이로 푸시합니다. 와 같습니다 gL. TIO
Riley

또한 입력을 제거합니까? 또는 암시 적 입력이 이제 가장 가까운 사용 가능한 입력으로 자동 확장됩니까?
매직 문어 Urn

4

매스 매 티카, 22 바이트

#&@@@Mod~MapIndexed~#&

Mathematica 접근법이 하나 더 있습니다.


1
MapIndexed@Mod입니다 거의 충분한은 '(
ngenisis

4

별이 빛나는 , 75 70 바이트

      +`  , + +   *    +  + +      +*   +    *  .               + + .'

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

설명

이것은 입력에서 숫자를 읽고 계속 초기화되는 카운터를 증가시키는 무한 루프입니다. 1 . 각 입력 및 카운터 쌍에 대해 계수가 계산되고 인쇄됩니다.

입력이 소진되었을 때 루프를 종료하기 위해 다음과 같은 트릭이 사용됩니다. 더 이상 입력 할 수없는 경우 하나 이상의 숫자를 읽으려고하면을 제공합니다 0. 따라서, 우리는 읽기 수를 그 자체로 나누고, 그것이 있다면 0프로그램은 오류로 끝납니다. 그렇지 않으면 결과를 버리고 계속합니다.

      +              Push 1. This is the initial value of the counter
`                    Mark label
  ,                  Read number from input and push it. Gives 0 if no more input
 +                   Duplicate top of the stack
 +                   Duplicate top of the stack
   *                 Pop two numbers and push their division. Error if divisor is 0
    +                Pop (discard) top of the stack
  +                  Swap top two numbers
 +                   Duplicate top of the stack
      +              Push 1
*                    Pop two numbers and push their sum. This increases the counter
   +                 Rotate stack down, to move increased counter to bottom
    *                Pop two numbers and push their modulus
  .                  Pop a number and print it as a number
               +     Push 10
 +                   Duplicate top of the stack
 .                   Pop a number (10) and print it as ASCII character (newline)
'                    If top of the stack is non-zero (it is, namely 10) go to label



3

apt, 5 4 바이트

®%°T

시도 해봐


설명

     :Implicit input of array U
®    :Map over the array
%    :Modulo of the current element
°T   :T (0, initially) incremented by 1

1
나는 당신이 바이트를 절약 할 수 있다고 생각합니다 ®%°T(실제로 Y원한다면 여전히 사용할 수 있습니다 )
ETHproductions

아하. 감사합니다, @ETHproductions.
얽히고 설킨

3

R, 22 바이트

pryr::f(x%%1:sum(x|1))

R은 모듈러스를하기 전에 1 : 길이 (x)를 수행합니다.


좋은 찾기 sum(x|1)!
JAD

1
방금 seq()대신 사용 하는 seq_along()것이 똑같다는 것을 알았습니다 . 다시 몇 바이트 짧아집니다.
JAD

1
나는 당신에게 그것을 말하려고했지만, 언급 할 담당자가 없었습니다. 알아서 다행입니다.
Shayne03




2

Excel VBA, 59 46 바이트

골프

익명 VBE 범위에서 입력 으로 공백 ( )으로 구분 된 배열 문자열 을 가져와 [A1]시작 목록의 1 기반 인덱스의 계수를 VBE 즉시 창으로 출력하는 즉각적인 창 기능

For Each n In Split([A1]):i=i+1:?n Mod i;:Next

입출력:

[A1]="10 9 8 7 6 5 4 3 2 1" ''# or manually set the value
For Each n In Split([A1]):i=i+1:?n Mod i;:Next
 0  1  2  3  1  5  4  3  2  1 

이전 Sub루틴 버전

전달 된 배열로 입력을 받고 VBE 즉시 창으로 출력하는 서브 루틴.

Sub m(n)
For Each a In n
i=i+1
Debug.?a Mod i;
Next
End Sub

입력 / 출력 :

m Array(10,9,8,7,6,5,4,3,2,1)
 0  1  2  3  1  5  4  3  2  1 

언 골프

Option Private Module
Option Compare Binary
Option Explicit
Option Base 0 ''# apparently Option Base 1 does not work with ParamArrays

Public Sub modIndex(ParamArray n() As Variant)
    Dim index As Integer
    For index = LBound(n) To UBound(n)
        Debug.Print n(index) Mod (index + 1);
    Next index
End Sub

입출력:

Call modIndex(10,9,8,7,6,5,4,3,2,1)
 0  1  2  3  1  5  4  3  2  1 


1

J, 9 바이트

>:@i.@#|[

1 ... n | 원본 목록

| 모드입니다





1

GNU APL 1.2, 9 바이트

(⍳⍴R)|R←⎕

APL은 오른쪽에서 왼쪽으로 작동하므로 괄호입니다.

R←⎕vector에 사용자 입력을 할당합니다 R.

⍴R벡터의 길이를 제공합니다. ⍳⍴R1에서 해당 길이까지의 모든 숫자를 가진 벡터를 제공합니다 (따라서 인덱스).

|mod 연산자입니다 ( a|byields b%a). APL은 배열에서 작동하므로 코드는 사용자 입력 모드의 각 요소를 포함하는 벡터의 색인을 스 니펫합니다.





1

Braingolf , 18 바이트

V1R&,{v.m1+v%}&,=;

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

설명

V1R&,{v.m1+v%}&,=;  Implicit input from commandline args
V1R                 Create stack2, push 1 to it, and return to stack1
   &,               Reverse stack1
     {.......}      Foreach loop, runs for each item in stack1
      v             Switch to stack2
       .m           Duplicate last item on stack and move duplicate to stack1
         1+         Increment last item on stack
           v%       Return to stack1, pop last 2 items and push modulus result
              &,    Reverse stack1
                =   Output stack1
                 ;  Suppress implicit output

1

자바 8 / C #, 39 바이트

a->{for(int i=0;i<a.length;a[i]%=++i);}

여기에서 시도하십시오.

C #에서 및 로 교체 ->하여 작동합니다 .=>lengthLength

a=>{for(int i=0;i<a.Length;a[i]%=++i);}

여기에서 시도하십시오.

설명:

a->{                       // Method with integer-array parameter and no return-type
  for(int i=0;i<a.length;  //  Loop over the indexes of the array (0-indexed)
      a[i]%=++i            //   And replace every integer with itself mod (1+i)
  );                       //  End of loop
}                          // End of method

입력 배열을 수정하므로 리턴이 없습니다.


1
변경할 경우 기본적으로 나는 C # 1에서 할 것입니다 무엇을, 또한 너무 C #을 위해 일하고 그것에 대해 언급 할 수 ->=>및 투자 length.
TheLethalCoder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.