선거를 해킹 수 ( v1)와 상대방에 대한 투표 수

당신은 전문적인 해커이며 상사는 후보자가 다가오는 선거에서 승리하도록 도와달라고 명령했습니다. 당신의 임무는 후보자의 결과를 높이기 위해 투표 시스템 데이터를 변경하는 것입니다.

투표 시스템은 투표 결과를 후보에 대한 투표 수 ( v1)와 상대방에 대한 투표 수 ( ) 의 두 정수로 저장합니다 v2.

연구의 주 후, 시스템의 보안 구멍을 발견하고 당신의 가치를 증가시킬 수 있습니다 v1정수로 x, 그리고 값을 감소 v2동일로 x. 그러나 제약 사항이 있으므로 보안 해시 코드를 일정하게 유지해야합니다.

  • 보안 해시 코드 : (v1 + v2*2) modulo 7

또한 x변경 사항이 눈에 띄지 않게하려면에 대한 값 이 최소화되어야합니다.

당신의 프로그램은 입력으로 받아 들여야 v1하고 v2; 그 출력에 대한 최적 값을해야 x하므로 v1>v2.

결과를 해킹 할 수없는 경우가 있습니다. 당신은 그것들을 다룰 필요가 없습니다 (이것은 당신의 상사에게 문제를 일으킬 수 있지만 그것은 또 다른 이야기입니다).

테스트 사례

100,123 --> 14
47,23 --> 0
40,80 --> 21
62,62 --> 7
1134,2145 --> 511


답변

파이썬 2, 30 바이트

lambda u,t:max(0,(t-u)/14*7+7)

u우리의 투표이고, t그들의 투표입니다.


답변

파이썬 2, 30 바이트

lambda a,b:max((b-a)/14*7+7,0)

답변

매스 매 티카, 22 바이트

0//.x_/;2x<=#2-#:>x+7&

인수가 포함 된 순수 함수 ##2. 불일치가보다 크면 최대 재귀 수준에 도달 7*2^16 = 458752합니다.

설명

0                       Starting with 0,
 //.                    repeatedly apply the following rule until there is no change:
    x_                    if you see an expression x
      /;                    such that
        2x<=#2-#            2x <= #2-# (equivalently, #+x <= #2-x)
                :>        then replace it with
                  x+7       x+7 (hash is preserved only by multiples of 7)
                     &  End the function definition

답변

젤리 , 9 바이트

IH:7‘×7»0

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

작동 원리

IH:7‘×7»0  Main link. Argument: [v1, v2]

I          Increments; compute [v2 - v1].
 H         Halve the result.
  :7       Perform integer division by 7.
    ‘      Increment the quotient.
     ×7    Multiply the result by 7.
       »0  Take the maximum of the product and 0.

답변

실제로 13 바이트

7;;τ((-\*+0kM

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

max((b-a)/14*7+7,0)xnor 및 orlp가 사용하는 것과 동일한 공식을 사용합니다.

설명:

7;;τ((-\*+0kM
7;;            3 copies of 7
   τ           double one of them
    ((-        bring the inputs back to the top, take their difference
       \*+     integer divide by 14, multiply by 7, add 7
          0kM  maximum of that and 0

답변

그루비, 41 37 바이트

{x,y->[Math.floor((y-x)/14)*7+7,0].max()}

이것은 이름이없는 폐쇄입니다. 수식 덕분에 xnor그리고 버그를 지적 해 주셔서 감사합니다 .orlpJames holderness

이전 솔루션 intdiv()은 정수 나누기에 사용되었지만 //파이썬 에서 사용되는 것과 다르게 동작 합니다.

여기 사용해보십시오!


답변

하스켈, 30 24 바이트

a#b=max 0$div(b-a)14*7+7

선호하는 후보의 투표 수를 먼저받는 중위 연산자. 로 반올림하는 다른 답변과 동일한 논리를 사용합니다 /14*7+7.