숫자 발생


12

입력:

정수 목록 (0을 포함하지 않음)

산출:

다음을 기준으로 개수가 같은 크기의 목록 :

  • 현재 항목이 음수 인 경우 :이 항목 앞의 모든 항목을보고 다른 숫자에서 숫자가 발생한 횟수를 세십시오.
  • 현재 항목이 양수인 경우 :이 항목 뒤에있는 모든 항목을보고 다른 숫자에서 숫자가 발생한 횟수를 세어보십시오.

하나의 트위스트가 있습니다 : 목록의 크기가 짝수이면 모든 숫자를 한 번만 계산합니다 (여러 자릿수와 일치하더라도). 크기가 홀수이면 현재 항목의 각 숫자에 대한 숫자의 모든 자릿수를 계산합니다 (중복 됨) 숫자는 여러 번 계산됩니다).

이것을 약간 명확히하기 위해 몇 가지 예를 들어 보겠습니다.

짝수 목록이있는 예 :

Input:  [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2,  4,  1,   2,    1,    1,   5   ]

목록의 크기는 짝수 이므로 각 숫자는 한 번만 계산합니다.

  • 4: 긍정적이기 때문에 기대합니다. 숫자가 포함 된 세 개의 숫자가 있습니다 4( 42, -942, 8374). 그래서 우리는로 시작합니다 3.
  • 10: 긍정적이기 때문에 기대합니다. 숫자 1및 / 또는 0( -10, -200)를 포함하는 두 개의 숫자가 있습니다 . 두 번째 출력은 2입니다.
  • 42: 다시 긍정적, 앞으로. 숫자 중 하나를 포함하는 4 개 개의 번호가 있습니다 4및 / 또는 2( -942, 8374, 728, -200). 따라서 세 번째 출력은 4입니다.
  • -10: 이번에는 음수이므로 거꾸로 봅니다. 숫자 1및 / 또는 0(빼기 기호는 무시) ( 10)를 포함하는 숫자가 하나만 있습니다 . 네 번째 출력은 1입니다.
  • 기타

홀수 목록이있는 예 :

Input:  [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13,  2,   2,  4,   8,   3,  0,   11,  6 ]

목록의 크기는 홀수 이므로 모든 숫자를 계산합니다.

  • 382: 긍정적이기 때문에 기대합니다. 이 하나 3다른 숫자 (의 381여섯) 8'다른 번호 (에이야 -82, -8, 381, 228, 28, -28), 6 2'다른 번호에 S ( -82, 228, 28, -28, 2). 그래서 우리는로 시작합니다 13.
  • -82: 음수이므로 거꾸로합니다. 하나가 3다른 번호 (에서 382), 하나의 8다른 수의 ( 382). 두 번째 출력은 2입니다.
  • ...
  • 228: 긍정적입니다. 세 가지가 있습니다 2'다른 번호 (에이야 28, -28, -2), 다른 세 가지 2의, 2 개의 8'다른 번호에 S ( 28, -28). 따라서이 출력은 8입니다.
  • 기타

도전 규칙 :

  • 입력이 0긍정적이거나 부정적이지 않기 때문에 입력이 항목으로 절대 포함되지 않는다고 가정 할 수 있습니다 .
  • 입력 목록에 항상 두 개 이상의 항목이 포함되어 있다고 가정 할 수 있습니다.
  • I / O는 유연합니다. 입력 / 출력은 정수 / 구분 된 문자열, 숫자 / 문자 매트릭스 등의 배열 / 목록 일 수 있습니다.
  • 목록의 첫 번째 숫자가 음수이거나 목록의 마지막 숫자가 양수이면 결과 목록에서 0이됩니다.
  • 홀수 목록을 사용하면 228위의 홀수 예에서 8(3 + 2) 대신 (3 + 3 + 2)가 발생 하는 것과 같이 동일한 숫자를 여러 번 포함하는 숫자가 여러 번 계산됩니다 5.

일반 규칙:

  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다.
    코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오.
  • 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
  • 기본 허점 은 금지되어 있습니다.
  • 가능하면 코드 테스트 링크를 추가하십시오.
  • 또한 필요한 경우 설명을 추가하십시오.

테스트 사례 :

Input:  [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2,  4,  1,   2,    1,    1,   5   ]

Input:  [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13,  2,   2,  4,   8,   3,  0,   11,  6 ]

Input:  [10, -11, 12, -13, 14, -15, 16, -17, 18, -19]
Output: [9,  1,   7,  3,   5,  5,   3,  7,   1,  9  ]

Input:  [10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20]
Output: [11, 2,   8,  4,   5,  6,   3,  8,   1,  10,  0 ]

Input:  [88, 492, -938, 2747, 828, 84710, -29, -90, -37791]
Output: [8,  9,   3,    9,    3,   4,     5,   4,   12    ]

Input:  [-1, 11, 11, 1]
Output: [0,  2,  1,  0]

Input:  [1, 11, 11, -1]
Output: [3, 2,  1,  3 ]

Input:  [-1, 11, 1]
Output: [0,  2,  0]

Input:  [1, 11, -1]
Output: [3, 2,  3 ]

답변:




4

자바 (JDK 10) , 204 바이트

a->{int l=a.length,r[]=new int[l],i=0,j,x,y,b,s,t=10;for(;i<l;i++)for(j=i+(s=a[i]>0?1:-1);0<=j&j<l;j+=s)for(b=0,x=a[i];x!=0;x/=t)for(y=a[j];b<1&y!=0;y/=t)if(x%t==-y%t|x%t==y%t){r[i]++;b+=1-l%2;}return r;}

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

크레딧


[1,11,-1]반환해야합니다 [3,2,3]. 홀수 목록이므로 모든 숫자가 계산됩니다. 먼저 1: 1전체 3 초를 기대 하십시오 11,-1. 둘째 11: 각 숫자를 기대합니다 : one 1+ one 1. 셋째 -1: 1총 3 초를 거꾸로 살펴보십시오 -1,11. (홀수 목록을 사용하면 각 숫자를 똑같이 볼 수 있습니다. 도전 과제에서 228이것을 명확하게 설명 하지만 숫자를 가진 이상한 예 는 이것을 조금 명확하게 보여줍니다.)
Kevin Cruijssen

@KevinCruijssen 지금 수정해야합니다.
Olivier Grégoire

실제로 그렇습니다. 이미 게시했을 때 초기 설명이 너무 불분명했을 수도 있습니다. 이제 귀하의 답변을 골프로 쓸 수 있는지 살펴 보겠습니다. ;)
Kevin Cruijssen

1
나도 많은 시간을 필요는 없지만, 한 가지 당신은 골프는 새로운 변수를 추가 할 수 있습니다 ,t및 변경 i+(a[i]>0?1:-1)i+(t=a[i]>0?1:-1)다음 단순히 사용하는 j+=t대신 j+=a[i]>0?1:-1.
Kevin Cruijssen

1
예를 들어 t = 10을 선언하고 t를 10으로
바꾸면



1

자바 스크립트 (Node.js) , 164,158,140 139 바이트

a=>a.map((x,i)=>a.slice(x<0?0:i+1,x<0?i:l).map(b=>c+=[...b+""].map(X=>s+=X>=0&&(x+"").split(X).length-1,s=0)&&l%2?s:+!!s,c=0)|c,l=a.length)

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


이것은 Node-y가 아닌 JS6처럼 보입니다.
아니 찰스

이것은 Tio 생성 문자열입니다. Node Babel 또는 SpiderMonkey JS가 있습니다. 그것은 여전히 ​​노드에서 잘 작동합니다
DanielIndie


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