한 줄의 코드를 작성하지 않고 간단한 계산기를 "쓰기"


25

그건 매우 쉬워요:

한 줄의 코드를 작성하지 않고 프로그램을 작성하십시오. 코드는 기존 스택 오버플로 질문과 답변으로 만 구성 될 수 있습니다.

프로그램은 두 개의 난수를 생성하고 숫자를 출력해야합니다

  • 에 추가
  • 빼기,
  • 와 곱한
  • 로 나눈

서로.

규칙

답변에 사용한 질문 / 답변에 대한 링크를 포함해야합니다. 다음 코드를 제외하고 찾은 코드를 수정할 수 없습니다.

  1. 변수, 함수 및 메소드의 이름을 바꿀 수 있습니다. (스캐너 .nextInt ()를 scanner.nextLine ()으로 변경하고 메소드 이름을 변경한다고 주장하여 메소드 호출을 변경할 수 있음을 의미하지는 않습니다. 같은 엔티티.). 변수, 함수 또는 메소드의 이름이 다시 바뀌면 솔루션이 계속 작동합니다.

  2. 들여 쓰기를 적절히 조정할 수 있습니다.

  3. 코드 스 니펫이 작동하기 위해 적절한 모듈이로드되었다고 가정 할 수 있습니다. (예를 들어, C # 및 C ++에 대한 명령문을 사용하는 Java 및 Python에 대한 명령문 및 모든 언어에서 동등한 명령문) 코드 스 니펫에 사용자에 대한 가져 오기가 포함 된 경우 코드 맨 위로 이동할 수 있습니다.

  4. 언어에서 코드가 어떤 종류의 메소드 본문에 있어야 실행되는 경우 (예 : public static void main(String[] args)Java, static int Main(string[] args)C # 등) 코드를 적절한 메소드로 랩핑 할 수 있습니다. 그러나 그 주요 방법의 내용은 수정되지 않은 채로 있어야합니다.

  5. 수행 된 모든 변수 / 방법 / 함수 / 클래스 이름 변경 목록을 제공해야합니다.

  6. 스 니펫 스 니펫을 사용할 수 없습니다 (게시물에서 코드 블록을 가져 가면 모든 것을 취함을 의미 함) 사용중인 언어에 익숙하지 않은 사람들을 위해 코드가 수행하는 작업에 대한 간단한 설명을 제공하십시오. 이 챌린지가 시작되기 전에 게시 된 스 니펫을 사용해야합니다.

인기 경연 대회, 가장 많은 찬사를 얻습니다!

마감 시간

8 월 말 6 일 말에 가장 많은 표를 얻은 제출을 수락합니다.


안녕하세요 마이클, PPCG 스택 교환에 오신 것을 환영합니다! 이 사이트의 코드 문제에 대한 규칙 중 하나는 객관적인 승리 조건이 있어야한다는 것입니다. 따라서 이러한 조건을 선택해야합니다. 이것은 당신에게 아이디어를 줄 수있는 비슷한 도전입니다.
isaacg

안녕하세요 @isaacg, 감사합니다. 이 기능을보고 삭제 / 편집하겠습니다.
chris p 베이컨

@isaacg, 이제 괜찮 길 바랍니다. 당신은 나보다 더 경험이 많고 마감일이 너무 가까웠습니까?
chris p 베이컨

훨씬 낫다. 마감일이 너무 가깝지만 표준은 1-2 주 정도입니다.
isaacg

다시 한 번 감사드립니다.
chris p 베이컨

답변:


17

J, 7 개의 질문 / 답변, J에 대해서는 없음

echo a%b[echo a*b[echo a-b[echo a+b[b=:?2147483647 [a=:?2147483647

그것을하는 아주 싼 방법이다, 나는 거짓말하지 않을 것이다. 내가 사용한 SO 답변은 다음과 같습니다.

나는 변수를 이름 foo으로 a하고 b코드에서.


APL에서는이 접근법을 사용하는 것이 훨씬 어려울 것이라고 생각하지만 코드 블록에서 문자를 스스로 찾을 가능성은 여전히 ​​큽니다.
JohnE

1
@JohnE 이것이 ASCII 노이즈라는 장점입니다!
Fatalize

1
이 답변이 마음에 들지만 "스 니펫 스 니펫을 사용할 수 없습니다"라는 질문이 표시됩니다.
unclemeat

3
@unclemeat "포스트에서 코드 블록을 가져 가면 모든 것을 가져갑니다". 게시물에 여러 코드 블록이있는 경우 하나만 취할 수는 있지만 코드 블록에 참여할 수는 없습니다.
페이탈 라이즈

이 모든 것은 완전한 코드 블록에서 나옵니다. 소스를 살펴보십시오.
Sean Latham

7

파이썬 2, 7 6 참조

이 솔루션을 만드는 것은 쉽지 않았습니다. 심볼이 검색에 포함되지 않기 때문에 특정 코드에 대한 스택 오버플로 검색이 어렵습니다.

Ref # 1 대신 다른 답변을 사용하여 2000 비트 임의의 숫자 로이 작업을 수행하는 방법을 찾았 지만 getrandbits, 전화를 걸고 전화를 걸면 온라인 환경에서 테스트 할 수 없었 os.urandom습니다 NotImplementedError. 그래서 나는 대신이 길을 갔다. 실제로 TIO와 함께 사용할 수 있습니다.

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

#assumed to be loaded
import random

n1 = []
n1.append(random.randint(1, 100))

n2 = []
n2.append(random.randint(1, 100))

r1 = map(sum, zip(n1, n2))
r2 = map(lambda t: t[0] - t[1] ,zip(n1, n2))

ab = [n1[i]*n2[i] for i in range(len(n1))]

r1, last = r1[0], r1[-1]
r2, last = r2[0], r2[-1]
ab, last = ab[0], ab[-1]
n2, last = n2[0], n2[-1]

print r1
print r2
print ab
ab = float(ab) / n2
ab = float(ab) / n2
print ab

참고 문헌

import random 질문에 허용되어 있기 때문에로드 된 것으로 가정합니다.

  1. lst = []그리고 lst.append(random.randint(1, 100))- 여기

  2. map(sum, zip(r1, r2)), map(lambda t: t[0] - t[1] ,zip(r1, r2)), r1,와 r2- 여기에

  3. result = float(a) / b- 여기

  4. ab = [a[i]*b[i] for i in range(len(a))]- 여기

  5. first, last = some_list[0], some_list[-1]- 여기

  6. print x- 여기

개명

  1. lstn1n2(Ref # 1 : 전체 코드를 두 번 사용했습니다) 로 이름이 변경되었습니다 .

  2. r1r2로 변경 n1하고 n2(참조는 # 2 : 답변을 포함하기 때문에 나는, 마지막 인쇄의지도와 격차를 할당, 나중에 비록 별도의 변수를 사용했습니다.)

  3. resulta로 변경 ab하고, b개명 n2(참조 # 3)

  4. ab로 변경 n1하고 n2(참조 # 4)

  5. first그리고 some_list모두에 이름이 r1, r2, ab, 또는 n2, 어떤 라인에 따라. (Ref # 5 :이 네 번 사용했습니다. 첫 번째 할당 만 사용되므로 이름을 바꾸지 않습니다. last)

  6. x행에 따라 이름이 r1, r2또는 로 바뀝니다 ab. (참조 # 6)


1

십진수 , 2 참조

82D82D00D30001D30041D301212010D301200D30001D30042D301212010D301200D30001D30043D301212010D301200D30001D30044D30122

사용 된 명령 :

  • 0 SET (기본 스택 인덱스)
  • 1 푸시
    • 2
  • 2
  • 3 I / O
    • 00 중복 스택
    • 01 스택에서 STDOUT까지
  • 4 수학
    • 1 더하다
    • 2 덜다
    • 3 곱하다
    • 4 분할
  • 8 건축
    • 2 임의의 정수를 스택에 푸시

설명 된 버전 :

82D       ; push random INT    - stack contains {r1}
82D       ; push random INT    - stack contains {r1, r2}

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
41D       ; math +             - stack contains {r1, r2, r1+r2}
301       ; print from stack to output
2         ; pop                - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
42D       ; math -             - stack contains {r1, r2, r1-r2}
301       ; print from stack to output
2         ; pop                - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
43D       ; math *             - stack contains {r1, r2, r1*r2}
301       ; print from stack to output
2         ;                    - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
44D       ; math /             - stack contains {r1, r2, r1/r2}
301       ; print from stack to output

출처 :

온라인으로 사용해보십시오! 자동으로 비활성화되지 않은 경우 출력 캐시를 비활성화해야합니다.

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