0으로 반올림


14

이것은 간단한 작업입니다. 양수 또는 음의 실수가 주어지면 0에 가까운 다음 정수로 반올림하십시오.

도전

  • 하나의 양수 또는 음수의 합리적인 형식 (stdin, function 등)을 통해 입력하십시오.

  • 이 숫자를 "0"으로 반올림하십시오. 양수이면 반올림하고 음수이면 반올림합니다.

  • 숫자를 반환하거나 콘솔에 출력하십시오.

테스트 사례

 1.1   =>  1
-1.1   => -1
 500.4 =>  500
-283.5 => -283
 50    =>  50
-50    => -50

규칙

즐기세요! 곧 더 많은 지미 도전


3
3.00대해 출력 할 수 3.14있습니까?
tsh

1
@A_ 오류 메시지가 stderr에있는 경우. 그리고 출력은 stdout에 있습니다. 기본적으로 허용됩니다.
tsh

1
또한 0.01-0.01산출한다 0...
roblogic

2
흠, 이것은 코드 골프에 대해 부당하게 사소한 것 같습니다. 대부분의 언어에는이 기능이 내장되어 있습니다. 모든 입력과 출력이 문자열이라고 가정하는 것 같습니다.
Octopus

2
3.00은 확실히 정수입니다. 보다 정확하게는, 많은 프로그래밍 언어들뿐만 아니라 표준 수학 표기법에서, "3.00"표기법은 정수 3 인 숫자 3을 나타내고; 그러나 많은 프로그래밍 언어에서 숫자가 부동 소수점 형식으로 저장됨을 나타냅니다. (하지만 저장 형식에 관계없이 정수입니다.)
Tanner Swett

답변:



40

파이썬 3 , 3 바이트

int

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

소수점 뒤의 숫자를 자릅니다.

참고 : 이것은 간단한 답변입니다. 투표하기 전에 다른 답변을 살펴 보시기 바랍니다


18
이것은 파이썬 3이 파이썬 2보다 인기가 있음을 보여줍니다.

1
어 ... 왜 공감대를합니까? 이것은 아주 사소한 답변입니다 ...
MilkyWay90

코드에 대한 훌륭한 설명이라고 생각합니다. :)
Chas Brown

3
@ChasBrown 나는 그렇게 생각하지 않습니다 ... 설명은 표준 구경 설명조차 아닙니다.
MilkyWay90

@Chas는 설명이 자신의 설명보다 무한히 더 완전하다고 지적합니다.
prl

21

2
죄송하지만, 닌자 님 ( codegolf.stackexchange.com/a/190673/83048 )
MilkyWay90

2
아가! 그러나 당신은 Python 3을 사용하고 있습니다 ... :)
Chas Brown

사실, 사람들은 그것이 파이썬 2에서도 작동한다는 것을 알아야합니다
MilkyWay90

불행하게도 당신은 :( 분 정도에 의해 속여있어
connectyourcharger

3
나는 강탈했다! :)
Chas Brown

12

펄 5 -p056l15 , 2 바이트

<>

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

어떻게 작동합니까?

-056   # (CLI) Make "." the input record separator
-l15   # (CLI) Make "\n" the output record separator
       # (otherwise it would use the input separator)
-p     # (CLI) Implicitly read $_ from STDIN
<>     # Read the second input field and do nothing with it
-p     # (CLI) Output $_ to STDOUT

또는보다 전통적인 답변을 선호하는 경우 :

펄 5 , 6 바이트

$_=int

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


L15이 아닌 \n, 그것은이다 \r. \nl12입니다. 그러나 TIO에서도 동일하게 보입니다.
Grimmy

두 번째 옵션은 다음과 같습니다-Minteger -p $_/=1
Nahuel Fouilleul

4
첫 번째 솔루션은 실제로 바이트 수에 플래그를 포함해야하기 때문에 실제로는 8 바이트입니다.
John Dvorak

2
@JohnDvorak은 실제로 메타 포스트 codegolf.meta.stackexchange.com/questions/14337/…에 따라 플래그는 바이트를 추가하지 않지만 언어의 다른 버전으로 계산합니다.
Nick Kennedy

@NahuelFouilleul 저도 이것에 대해 생각했지만 다른 방법으로 2 바이트를 얻은 이후에는 중요하지 않았습니다.
Xcali

6

미로 & 헥사 고니 , 3 바이트

FryAmTheEggman에게 Hexagony를 썼습니다.

?!@

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

어떻게?

미로와 헥사 고니는 가능한 빨리 알려줍니다! ...

? - read and discard from STDIN until a digit, a - or a + is found. Then read as many characters as possible to form a valid (signed) decimal integer and push its value
! - pop a value and write its decimal representation to STDOUT
@ - exit the labyrinth

3
이것은 마틴의 다른 언어들에도 해당 될 수 있지만, 정확히 같은 프로그램이 Hexagony에서도 작동합니다 .
FryAmTheEggman 1

3
Heh, 나는 항상 Hexagony에서 대답하고 싶었습니다. 시도하지 않고 그것을하는 것은 내가 일어날 수 있다고 생각한 마지막 일이었습니다!
Jonathan Allan

IO@Backhand에서와 같은 방식으로 작동하며 &.@Befunge에서도 마찬가지 입니다. 아마도 정수 입력을 가진 많은 언어들과 정수 처리 만이 동일 할 것입니다
Jo King

@JoKing 그래서 우리는 누군가 정수 i / o를 가진 언어를 찾고 stdin에서 stack / list까지 모든 숫자를 읽은 다음 기본적으로 stdout으로 인쇄하기를 기다리고 있습니다. 나는 하나가있을 수 있다고 생각하며 0 바이트의 대답이 될 것입니다.
tsh

아마 @tsh!
Jonathan Allan

6

brainfuck , 26 바이트

,[.+++++[->+++++<]>+[,>]<]

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

.숫자가 10 진수 인 경우 후행으로 출력

문자가 a인지 확인하기 위해 46을 빼는 대신 .5를 더하고 5를 곱하여 255를 얻은 다음 하나 더 추가하여 0으로 롤오버 한다는 점을 제외하면 현명한 골프는별로 현명하지 않습니다 . 3을 빼고 6을 곱하고 2를 빼는 것은 동일한 바이트 수입니다.


6

C (tcc), 39 21 10 바이트

실제로 아무도 C를 사용한다고 생각하지 않아서 놀랐습니다.

f(float i){}

이것은 정체성 함수가 아닌 것 같습니다. f 함수의 암시 적 int 유형은 부동 소수점을 자릅니다.

TIO

사람들을 속일 가능성은 적지 만 바이트 길이는 짧습니다.

f(int i){}

TIO


float부동 소수점 값을 입력하기 위해 다른 레지스터를 사용하므로 작업하지 마십시오 .
Hauleth



3

Java (OpenJDK 8) , 15 바이트 9 바이트

s->(int)s

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

@ kevin-cruijssen 덕분에


인터페이스 람다를 사용하여 9 바이트 이므로 프리미티브와 간단한 캐스트를 사용할 수 있습니다 (int). 그리고 여기 메소드 참조를 사용 하는 재미있는 15 바이트 대안이 있습니다. :)
Kevin Cruijssen

1
@KevinCruijssen 9 바이트 답변을 지적 해 주셔서 감사합니다! 그리고 15 바이트 대안 솔루션은 훌륭합니다! 또한 당신의 대답의 큰 팬! 귀하의 기여에 대해서도 커뮤니티에 참여하도록 영감을 받았습니다 : D
Margon

내가 도와 줄 수있어서 기쁘고 영감을 듣는 것이 재미 있습니다. : D 환영합니다! 아, 아직 보지 못했다면 Java 로 골프를 치기위한 팁<모든 언어>로 골프를 치기위한 팁에 관심이있을 것입니다. 체류를 즐길 수! :)
Kevin Cruijssen

감사합니다! :) 나는 이미 모든 팁을 읽고 게시하기 전에 실제로 많은 것을 숨겼습니다! 앞으로 더 많은 답변을 얻을 수 있기를 바랍니다.
Margon

3

엑셀, 10 바이트

=TRUNC(A1)

TRUNC 숫자의 소수 부분을 제거하여 숫자를 정수로 자릅니다.





2

ReRegex , 12 바이트

\..+//#input

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

ReRegex는 일치하는 항목이 없을 때까지 계속 일치하는 프로그래밍 언어입니다.

MATCH
    \.                                      The literal period/full stop char
    .+                                      Followed by one or more characters
REPLACE
    (nothing)                               Equivalent to removing the input
STRING TO REPEATEDLY MATCH/REPLACE UNTIL THERE ARE NO MATCHES
    #input                                  The input



2

인텔 8087 FPU 기계 코드, 14 바이트

D9 2E 010C      FLDCW CW_RNDZ   ; modified CW register for round towards zero
D9 06 010E      FLD  A          ; load single precision value A into ST(0)
DF 16 0112      FIST B          ; store integer value of ST(0) into B

CW_RNDZ   DW    0F7FH           ; control word to round down

입력은 메모리 위치 A(a DD) 에서 단 정밀도 값이고 , 출력은 메모리 위치 B(a DW) 에서 정수 값 입니다.

제어 워드 ( 0F7FH)를 설정하여 먼저 8087을 0 모드로 반올림해야합니다 . 그런 다음 부동 소수점 값을로드하고 정수로 다시 저장하십시오.





2

,19 17 13 바이트

이것은 인쇄 할 수없는 일부 문자를 출력합니다. 또한 오류와 함께 종료됩니다. (이제 역 입력이 필요합니다!)

?'(:\.>')"([,

오류와 함께 종료는 기본적으로 허용됩니다
EdgyNerd

2

공백 ( vii5ard 컴파일러 사용 ), 18 17 바이트

[S S N
_Push_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve_input][T  N
S T _Print_as_integer]

문자 S(공백), T(탭) 및 N(줄 바꾸기)가 강조 표시로만 추가되었습니다.
[..._some_action]설명으로 만 추가되었습니다.

온라인으로 사용해보십시오. 온라인 Whitespace-compiler vii5ard에서 코드를 실행하려면 코드를 직접 복사하여 붙여 넣어야합니다 (SE는 탭을 여러 공백으로 변환합니다!). 실행을 클릭하면 입력 (즉 -285.5)을 요청하고 Enter를 클릭하면 계속 진행하고 출력 -283합니다.

의사 코드의 설명 :

Integer i = STDIN as integer
Print i as integer

공백은 I / O를 정수 또는 단일 문자로만 사용할 수 있으므로이 경우 입력을 정수로 읽고 다른 후행 문자는 무시합니다. 즉 -283.5또는 -283abc5로 입력 (및 출력)됩니다 -283.

불행히도 위의 두 가지 이유로 TIO 에서 작동하지 않습니다 (모든 공백 컴파일러는 약간 다릅니다.) :

  1. 그것은 줄 것이다 no parse우리는 유효한 정수가 아닌 정수로 입력을 읽으려고 할 때 오류가 발생했습니다. 따라서 대신 한 번에 한 문자를 읽고 .더 이상 입력이 없거나 (예 : 50/ -50) 가 없으면 즉시 오류와 함께 중지 합니다.
  2. vii5ard 컴파일러에서는 그냥 0으로 푸시하는 것도 가능 SSN하지만 TIO에서는 추가 S또는 T: SSSN// 가 필요합니다 SSTN. 첫 번째 S스택 조작 사용입니다 . 두 번째 SPush 다음에 오는 정수입니다 . 제 S/은 T각각 양극 / 마이너스이고; 및 S/ T(AN 다음에 그 이후로는 N) 우리가 진에 밀어 원하는 번호 S=0T=1. 정수 0의 경우이 이진 부분은 기본적으로 0이므로 중요하지 않습니다. 그러나 TIO에서는 여전히 양수 / 음수를 지정해야하며 vii5ard와 같은 대부분의 다른 공백 컴파일러에서는 그렇지 않습니다.

공백 ( TIO 컴파일러 사용 ), 48 바이트

[N
S S N
_Create_Label_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   T   T   _Retrieve_input][S N
S _Duplicate_input][S S S T S T T   T   S N
_Push_46_.][T   S S T   _Subtract][N
T   S S N
_If_0_Jump_to_Label_EXIT][T N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

문자 S(공백), T(탭) 및 N(줄 바꾸기)가 강조 표시로만 추가되었습니다.
[..._some_action]설명으로 만 추가되었습니다.

온라인으로 시도하십시오 (원시 공백, 탭 및 줄 바꾸기 만).

의사 코드의 설명 :

Start LOOP:
  Character c = STDIN as character
  If(c == '.'):
    Exit program
  Print c as character
  Go to the next iteration of LOOP




1

05AB1E , 1 바이트

ï

레거시 버전 (Python으로 작성 됨)에서 정수 내장 캐스트는 10 진수 값을자를 것으로 예상대로 작동합니다.

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

새로운 버전의 05AB1E (Elixir로 작성)에서는 문자열에서만 작동합니다 (예를 들어 사전 / 숫자를 정렬하지 않는 한 정수 / 소수 / 문자열은 모두 상호 교환 가능해야 함). @Adnan 에게 버그를보고 할 수있을 것 같아 ..

정수 / 10 진수 입력 (잘못된 결과 제공)과 문자열 입력 (올바른 결과 제공)을 비교하려면 온라인 으로 시도하십시오 .


1
ï레거시가 아닌 05AB1E에서 잘 작동합니다 . 이상한 방식으로 작동하는 배열 입력입니다.
Grimmy


1

Aheui (동위 원소) , 9 바이트

방망희

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

삼각 답변의 기본 아이디어 (또는 다른 언어는 숫자 입력을 정수로 사용 함).

재미있는 사실. 방망희(발음 bang-mang-heui( a의은 ark으로)) 거의 같은 소리 방망이(발음 bang-mang-i( aark , i같은 소리를 E배트 의미한다).

어떻게 작동합니까?

숫자를 정수로 사용합니다.

값을 숫자로 인쇄합니다.

프로그램을 종료합니다.


1

PowerShell , 19 바이트

$args-replace'\..*'

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

PowerShell은 기본적으로 은행가의 반올림 을 수행하는데, 이는 다른 많은 언어가 반올림하는 것과 거의 반대입니다. 따라서 전통적으로 우리 [Math]::Truncate()는 소수점과 소수점 부분을 제거하고 여기서 관심있는 "0"반올림을 달성하는 데 사용했습니다. 그러나 조금 길기 때문에이 tip을 사용 하면 입력을 문자열에 암시 적으로 캐스팅하고 정규 표현식 -replace을 수행 하여 마침표와 그 이후의 것을 제거하고 파이프 라인에 출력을 남겨 두어 0으로 반올림 할 수 있습니다 암시 적 인쇄.


나는 이것이 음수에 대해 원하는 결과를 줄 것이라고 생각하지 않습니다.
Octopus

@Octopus 그래요? 그것은 소수 부분을 잘라내어 양수 또는 음수에 관계없이 숫자를 0으로 이동시킵니다.
AdmBorkBork

알았어 롤
Octopus

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