투표의 C- 인수 구하기


11

이 도전에서 당신은 C- 인수라고 불리는 숫자를 알아 냄으로써 다른 표가 주어진다면 표가 얼마나 논란의 여지가 있는지를 결정할 것입니다. C- 인자는 무엇입니까?

선거에 대해 여러 표를 얻었다 고 상상해보십시오. 우리는 사용합니다 10도전을 위해 선거에 두 개의 서로 다른 후보를 나타냅니다. 다음은 본 선거에서 10 표입니다.

0110111011

이제 후보자 투표의 C- 인수를 찾고 싶다고 가정 해 봅시다 0. 우리는 다음과 같은 기능으로 그렇게 할 수 있습니다.

에프(영형,V)=에스(영형미디엄이자형(V))

에서 에프 , o우리의 C-요인을 결정하려는 투표하고, v투표의 배열입니다. 따라서 후보자에 대한 투표의 C- 인수를 얻기 위해 함수를 사용하십시오 0.

에프(0,[0,1,1,0,1,1,1,0,1,1])=0.7

0110.3

도전

에프(영형,V)ov

  • o정수 0이거나1 .

  • v 0과 1을 포함하는 임의의 길이의 배열 (또는 언어 사양에 따라 유사한 컨테이너 유형)이어야합니다.

  • 함수는 위의 공식 또는 수정 된 방법을 사용하여 함수 매개 변수가 주어지면 결과 C- 인수를 콘솔로 리턴하거나 인쇄해야합니다.

행운을 빕니다! 가장 적은 바이트가 이깁니다 (5 일 안에 선정 된 당첨자).


되지 mean(v)귀하의 예제에서 0.7로 동일?
HyperNeutrino 2016 년

@HyperNeutrino 예. 무엇이 문제입니까?
connectyourcharger 2016 년

어떻게 abs(0 - 0.7)0.3습니까?
HyperNeutrino 2016 년

아 예제를 수정했습니다. 나는 두 숫자를 바꾸었다
connectyourcharger

오 알았어 설명해 주셔서 감사합니다!
HyperNeutrino 2016 년

답변:




6

APL (Dyalog Unicode) , 9 8 5 바이트

≠⌹⊢=⊢

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

익명의 기차. 바이트를 저장 한 @ Adám과 3 바이트의 @ngn 덕분에 감사합니다!

어떻게:

≠⌹⊢=⊢  Anonymous Train
      The right argument (⍵)
  ⊢=   Equals itself. Generates an array of 1s
      XOR left (⍺) and right args; generates  or (not ⍵), depending on ⍺.
      Divide these matrices.

4
힌트 : ⌹
ngn


3

2
내가 먼저, 너무 늦게 내 주문 서로 다른 생각이었다 .. 30 초 해요 α다음 ÅA, P
케빈 Cruijssen

2
@KevinCruijssen 귀하의 솔루션이 실시간으로 등장하는 것을 보았습니다. 재밌어요!
connectyourcharger 2016 년

@KevinCruijssen 나는 두 주문이 어떻게 작동하는지 이해하지 못합니다 ... :-) 내 05AB1E 지식이 그리 좋지 않습니다
Luis Mendo

1
@KevinCruijssen 아, 알겠습니다. 나를 혼란스럽게 한 것은 두 가지 접근 방식이 임의의 숫자에 대해 다른 결과를 제공한다는 것입니다. 그러나 0/1 입력의 경우 동의하는 것 같습니다.
Luis Mendo 2014 년

2
@LuisMendo 아, 맞아요. 다른 정수로 테스트했지만 순서에 관계없이 동일한 결과를 얻었습니다 (그러나 0.8의 테스트 케이스는 실제로 다릅니다). 입력에 0/ 이외의 다른 것이 포함되어 있으면 1먼저 평균을 얻는 방법에 대한 접근 방식을 시도하고 도전 설명의 수식과 비교할 때 절대 차이가 정확합니다. 0 초 / 1 초만으로 일부 대체 3 바이트도 가능합니다.ÊÅA .
케빈 Cruijssen


2

첨부 , 11 8 바이트

Mean@`/=

온라인으로 사용해보십시오! 로 인수를 취합니다 f[o, v].

정말 독창적 인 것은 없습니다.

대체 접근법

11 바이트 : Average@`/=

11 바이트 : ${1-x~y/#y} 의 발생 횟수를 의 길이 xy나눈 y다음에서을 뺍니다 1.

11 바이트 : {1-_2~_/#_} (이것에 대한 인수는 반대로됩니다)

15 바이트 : 위 ${Sum[x/=y]/#y} 의보다 명시적인 버전.Average .



1

양성자 , 26 바이트

(o,v)=>1-v.count(o)/len(v)

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

Proton은 정밀도를 높이기 위해 일반 Python 숫자 대신 sympy를 사용하기 때문에 분수입니다.

(-7 바이트; abs-diff는 평균이 abs-diff의 평균보다 짧습니다. 실제로는 바보입니다)

Rod 덕분에 -1 바이트


@로드 나는 1/0 입력 제한을 최적화하는 방법을 알아 내려고했지만 실패했습니다. 감사!
HyperNeutrino 2018 년

1

펄 6 , 20 바이트

{@_.sum/@_}o(*X!= *)

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

* X!= *익명의 함수는 두 인수의 비 균등 교차 곱을 취합니다. 일련의 부울을 생성합니다. 예를 들어로 1 X!= (1, 0, 1)평가됩니다 (False, True, False).

{ @_.sum / @_ }인수의 평균을 반환하는 또 다른 익명 함수입니다. 부울 True1숫자 및 False로 평가됩니다 0.

o연산자 하나로 두 기능을 구성한다.


1

참여 , 3 바이트

nÆm

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

nÆm  Main Link
n    Not Equals (returns a list of whether or not each element is unequal to to the value)
 Æm  Arithmetic Mean

이 젤리 언어는 젤리가 내 코드로 파싱하는 방식의 구조를 재현하려고 시도하는 것과 비슷하다는 점에서 젤리에 크게 영감을 받았다.

Mr. Xcoder 덕분에 -1 바이트


1을 저장 하는 n대신 사용할 수 있습니다 _...A( 온라인으로 사용해보십시오! ).
Mr. Xcoder

@ Mr.Xcoder Ooh 좋네요. 그래,이 롤을 만든 후! = 트릭을 깨달았다. 감사!
HyperNeutrino 2016 년

1

레티 나 0.8.2 , 27 바이트

(.),((?(\1)|()).)*$
$#3/$#2

온라인으로 사용해보십시오! 분수를 출력합니다. 설명 : 첫 번째 그룹은을 캡처 o하고 두 번째 그룹은의 각 항목을 캡처 v하는 반면 조건부에서는 투표가 다른 경우에만 세 번째 그룹이 캡처를 수행하도록합니다. $#원하는대로 구성은 관련 캡처의 수를 반환합니다.




1

느릅 나무 0.19, 48 바이트

f a v=abs(v-(List.sum a/toFloat(List.length a)))

여기 온라인 데모 .





0

자바 8, 47 바이트

v->o->(o-=v.get().sum()/v.get().count())<0?-o:o

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

또는 대안 적으로 :

v->o->Math.abs(o-v.get().sum()/v.get().count())

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

두 입력 모두 Supplier<DoubleStream>투표 목록과 투표 vdouble위한 것 o입니다.

설명:

v->o->                 // Method with DoubleStream-Supplier & double parameters and double return
  (o-=v.get().sum()    //  Get the sum of the DoubleStream-Supplier
      /v.get().count() //  Divide it by the amount of items in the DoubleStream-Supplier
      )                //  Subtract this from `o`
       <0?-o:o         //  And get the absolute value of this updated value `o`



0

Pyth, 4 바이트

aE.O

설명:

       ( implicitly set Q = eval(input()) )
a      Absolute difference between
 E     eval(input()) (this is the second line of input taken)
  .O   and the average of
    Q  (implicit) Q (the first line of input)

입력 형식은 다음과 같습니다.

[0,1,1,0,1,1,1,0,1,1]
0

먼저 투표의 배열과 후보 두 번째.

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

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