키르히 호프의 법칙 적용


15

Kirchhoff의 법칙에 따르면 모든 전류를 합산하면 (접합으로가는 전류에 대해 양수이고, 접합에서 나가는 전류에 대해서는 음수) 항상 0으로 표시됩니다.

다음 다이어그램을보십시오.

여기에 이미지 설명을 입력하십시오

Kirchhoff의 법칙을 사용하면 i1 + i4-i2-i3 = 0이므로 i1 + i4 = i2 + i3임을 알 수 있습니다.

하나의 접점에 모든 전류가 있고 하나의 접점을 제외한 모든 전류가 접점을 떠나는 두 개의 목록이 주어지면 마지막 목록이 출력됩니다.

테스트 케이스 :

[1, 2, 3], [1, 2] = 3
[4, 5, 6], [7, 8] = 0
[5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1] = 6

두 번째 목록은 항상 첫 번째 목록보다 한 항목이 적습니다. 출력은 음수 일 수 없습니다. 가장 작은 프로그램이 승리합니다.


1
실제로 저항과 전류 값을 주면 퍼즐이 더 나았을 것입니다. 이 Q는 당신이 이름을 짓는 것처럼 법을 도입 한 것 같습니다. (Q는 법없이 쉽게 언급 될 수있었습니다)
ghosts_in_the_code

5
Kirchoff의 현재
루이스 Mendo


결과를 반환하거나 실제로 결과를 인쇄 / 반환하는 함수를 만들 수 있음을 지정할 수 있습니다.
tpvasconcelos

답변:


14

젤리, 2 바이트

_S

여기 사용해보십시오!

첫 번째 인수에 입력 전류를, 두 번째 인수에 출력 전류를 가져옵니다. _더 긴 목록에서 단일 요소를 그대로두고 S결과를 합산하여 쌍으로 뺍니다 .


9

하스켈, 14 바이트

(.sum).(-).sum

사용 예 : ( (.sum).(-).sum ) [5,7,3,4,5,2] [8,4,5,2,1]-> 6.

각 목록을 요약하고 차이점을 고려하십시오.


5

CJam, 8 6 바이트

q~.-:+

입력은 두 개의 CJam 스타일 배열을 사용합니다.

모든 테스트 사례를 실행하십시오. (여러 테스트 사례를 한 번에 읽고 각 라인을 개별적으로 처리하여 입력에서 예상되는 결과를 버리는 프레임 워크를 포함합니다.)

설명

q~  e# Read and evaluate input.
.-  e# Elementwise difference.
:+  e# Get sum.

.-첫 번째 목록이 항상 두 번째 목록보다 길다는 것을 보장하기 때문에 안정적으로 작동합니다. (그렇지 않으면 두 번째 목록의 불필요한 요소가 결과에 추가되어 빼기 대신 합계에 추가됩니다.)


1
정확히 80k 축하합니다!
ETHproductions

4

MATL , 3 4.0 바이트

_hs

입력은 다음과 같습니다. 먼저 전류를 떠난 후 전류를 입력합니다.

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

_     % implicitly input array with leaving currents (except one). Negate
h     % implicitly input array with entering currents. Concatenate  
s     % sum of all elements in concatenated array

내 것과 똑같은 해결책이지만 다른 문자로 haha, +1
Adnan

@Adnan 내가 봤어! (+1 이미)
Luis Mendo

@Adnan 입력 순서를 변경하고 두 배열을 연결하여 3 바이트로 줄였습니다. 어쩌면 그것은 당신의 대답에도 적용될 수 있습니까?
Luis Mendo

아, 실제로 연결 함수를 구현해야합니다 : p. 아주 좋은 답변입니다! :)
Adnan

3

자바 스크립트, 36 바이트

(a,b)=>eval(a.join`+`+'-'+b.join`-`)


3

05AB1E , 4 바이트

암호:

OEO-

설명:

O     # Take the sum of the input list
 E    # Evaluate input
  O   # Take the sum of the input list
   -  # Substract from each other

연결 기능을 구현해야한다는 것을 상기시켜 준 Luis Mendo 에게 감사한다 . 내가 더 빨리 구현했다면 3 바이트 일 것입니다.

비경쟁 버전 (3 바이트) :

첫 번째 목록은 떠나는 현재 목록이고 두 번째 목록은 현재 입력 목록입니다. 암호:

(«O

설명:

(    # Negate the list, e.g. [3, 4, 5] would become [-3, -4, -5]
 «   # Concatenate the second list to the first
  O  # Take the sum and implicitly output it

CP-1252 인코딩을 사용합니다.




2

펄 6 , 11 바이트

*.sum-*.sum

용법:

# give it a lexical name
my &code = *.sum-*.sum;

say code [1, 2, 3], [1, 2]; # 3
say code [4, 5, 6], [7, 8]; # 0
say code [5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1]; # 6

2

파이썬 3, 24 바이트

lambda a,b:sum(a)-sum(b)

또는

파이썬 2, 19 바이트

print sum(a)-sum(b)

결과를 인쇄하거나 반환하는 함수를 만들어야하는지에 따라


1

ES6, 39 바이트

(i,o)=>i.reduceRight((r,a,j)=>r+a-o[j])

내가 사용하고 싶었 기 때문에 reduceRight.




1

K5, 5 바이트

-/+/'

차이 ( -/) 합계 ( +/) 각각 ( ').

행동 :

  (-/+/')'((1 2 3;1 2);(4 5 6;7 8);(5 7 3 4 5 2;8 4 5 2 1))
3 0 6



0

공통 Lisp REPL, SBCL 28 24 바이트

이것을 REPL에 작성하십시오.

#.`(-(+ #1=,@(read))#1#)

다음과 같이 입력 목록을 작성하십시오.

(2 3 4)
(2 3)

그런 목록 형식을 사용하는 것이 좋습니다 (예 : 대신 '(2 3 4)) 코어 덤프의 대답을 사용했습니다. 을 솔루션의 공식으로 다음 다른 방식으로 계산 효과를 얻었습니다.

설명

하자 e_1,...,e_n첫 번째 목록의 요소 수와 f_1,...,f_{n-1}두 번째 목록의 요소합니다. 식을 평가하고 싶습니다 (-(+ e_1 e_2 ... e_n)f_1 f_2 ...f_{n-1}) . 첫 번째 목록의 요소 합계에서 두 번째 목록의 요소를 빼는 것을 의미합니다. 필요한 표현은 다음과 같이 구성됩니다.

backqoute가 평가를 중지

#1= 약간의 쓰기, 저장 기억 ,@(read)

,@ 역 따옴표의 영향을 중지하고 (읽기) 평가하여 요소를 목록에서 가져옵니다.

(read) 입력 요청

#1# "로드"에 의해 저장된 리스프 오브젝트 #1=

#. Lisp 객체의 인쇄 표현 평가

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