태그 보관물: array-manipulation

array-manipulation

Sex Bob-ombs의 부기 (누계액이 너무 낮은 지 확인) 밴드가되었으며 현재

믿거 나 말거나, 섹스 밥 놈 은 세계적으로 유명한 밴드가되었으며 현재 세계 투어 중입니다! 회계 담당자 로서 일상적인 재정을 감독하고 정기적 인 보고서를 제공해야합니다.

몇 주마다 지출 목록을 전체 순서대로 USD 단위 로 작성하십시오.

예를 들어, 목록

378
-95
2234

378 달러가 계좌에 예치되었고 그 후 95 달러가 철회 된 후 2234 달러가 예치 된 후.

이 값의 누계 합계가 일부 임계 값 T 아래로 떨어지지 않도록하려고합니다 . 이를 위해 프로그램을 작성하기로 결정했습니다.

도전

단일 정수 T 와 정수 목록 을 취하는 프로그램이나 함수를 작성하십시오 . 정수 목록의 누계 합이 T 보다 작 으면 거짓 값 을 인쇄하거나 반환하고 , 그렇지 않으면 값을 인쇄하거나 반환합니다.

일반적인 입력 방법 (stdin, file, command line, arguments to function)을 사용할 수 있습니다.

  • 목록의 시작 부분에서 누적 합계는 0입니다. 따라서 양수 T 는 결과가 항상 거짓임을 의미합니다.
  • + 양의 정수 앞에 절대로 있지 않습니다.
  • 이 목록에는 0이 포함될 수 있습니다.
  • 목록이 비어있을 수 있습니다.

테스트 사례

이들 모두에서 T 는 -5이다.

거짓 :

-6
1
2
3
-20
200
-300
1000

진실한 :

[empty list]
-5
4
-3
-6

채점

가장 적은 바이트를 가진 제출이 이깁니다. Tiebreaker는 가장 빠른 게시 제출에갑니다.

이것을 유감스럽게 생각한 유감스러운 말.



답변

gs2-6 바이트

목록이 스택의 맨 위에 있고 임계 값이 레지스터 A에 있다고 가정합니다. 니모닉에서 :

inits
sum get-a lt filter3
not

바이트 코드로 :

78 64 D0 70 F2 22


답변

하스켈, 22 바이트

f t=all(>=t).scanl(+)0

사용법 : f (-5) [4,-3,-6]출력 True.

소계 목록을 만들고 모든 요소가> = t인지 확인합니다.

편집 : 빈리스트 양성을위한 버그 수정 t


답변

파이썬 2, 41

f=lambda a,t:t<=0<(a and f(a[1:],t-a[0]))

첫 번째 인수는 배열입니다. 두 번째는 최소 누적 합계입니다.


답변

J, 11 바이트

   */@:<:0,+/\

테스트

   _5 (*/@:<:0,+/\)  1 2 3 _20
0
   _5 (*/@:<:0,+/\)  >a: NB. empty list
1

FUZxxl 덕분에 1 바이트 개선 .

원본 버전에 대한 설명 (*/@(<:0,+/\))

  • +/\누적 합계 (작성 합 +/프리픽스를 \)
  • 0,+/\ 누계에 0을 추가합니다.
  • (<:0,+/\)좌측 입력 작거나 같은 <:(의 요소)보다 결과 0,+/\우측 입력에
  • @ 이전 결과로
  • */ 모든 요소의 곱 (모든 요소가 1 인 경우 1, 요소가 0 인 경우 0)

답변

APL, 8 10

∧.≤∘(0,+\)

이것은 T왼쪽 인수로,리스트를 오른쪽 인수로 취하는 함수입니다 .

  • 0,+\: 오른쪽 인수의 누적 합계, 0에 추가
  • ∧.≤: 왼쪽 인수는 오른쪽 인수의 모든 항목 (smaller)보다 작거나 같습니다 (≤)

답변

Mathematica, 34 바이트

FreeQ[Accumulate@{0,##2},n_/;n<#]&

이것은 T첫 번째 매개 변수로 사용하고 이름이없는 가변 함수를 정의 하고 나머지 매개 변수로 트랜잭션 을 취하고 부울을 리턴합니다.

FreeQ[Accumulate@{0,##2},n_/;n<#]&[-5, 1, 2, 3, -20]
(* False *)

나는 ##2두 번째에서 모든 인수를 목록으로 “스 플래트” 하는 드문 경우 를 사용할 수 있기 때문에 이것을 좋아 합니다. 자세한 내용은 이 골프 팁 의 마지막 섹션 참조하십시오 .


답변

k, 8 자

임계 값을 첫 번째 인수로 사용하고 목록을 두 번째 인수로 사용하는 2 진 동사. 놀랍게도 이것은 오픈 소스 Kona를 포함한 모든 k 버전에서 작동합니다.

&/~0<-\,

k에서 함수의 구성은 하나를 작성하고 다른 하나를 작성하여 수행되므로 함수별로이를 구성 할 수 있습니다. 오른쪽에서 왼쪽으로 :

  • -\,연속 누계를 가져와 임계 값에서 뺍니다. ( f이진이면으로 f\ (a; b; c; ...) 확장됩니다 (a; a f b; (a f b) f c; ...)., 목록을 함께 조인합니다.) 항목이 0 일 때 끊김이 발생하고 오버 드로잉은 엄격하게 양수 값을 제공합니다.
  • ~0<0보다 작습니다. k에는 실제로는 크거나 같지 않은 <=연산자가 없으므로 부 울린 값보다 적은 값을 사용하지 말아야하지만 결과가 양수가 아닌지 테스트합니다. 목록의 각 원자에 자동으로 적용됩니다.
  • &/논리적 인 AND의 목록입니다. ( fDyadic의 경우) 따라서 목록의 모든 부울이 True인지 테스트합니다.

예 :

  (&/~0<-\,)[-5; 1 2 3 -20]
0
  f:&/~0<-\,  /assign to a name
  f[-5; 4 -3 -6]
1