주어진 숫자를 포함하는 -100에서 100까지의 모든 숫자를 인쇄하십시오.


38

0에서 9 사이의 숫자를 제공하면 함수 / 서브 루틴은 주어진 숫자를 포함하는 -100에서 100 사이의 모든 숫자를 인쇄해야합니다.

예를 들면 다음과 같습니다.

Input: 9
Output: -99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -79 -69 -59 -49 -39 -29 -19 -9 9 19 29 39 49 59 69 79 89 90 91 92 93 94 95 96 97 98 99

규칙 :

  • 문자열 (선택한 언어로 표현 된 방식) 또는 문자 배열을 사용할 수 없습니다. (콘솔에 답을 인쇄하는 것을 제외하고)
  • 배열을 사용할 수 없습니다.

채점 :

점수 = 서브 루틴 / 함수의 길이 (공백은 계산되지 않음)

가장 낮은 점수를 얻은 답이 이깁니다.

공백은 계산되지 않습니다. 코드를 올바르게 포맷하십시오!

일부 답변은 정규 표현식을 사용하며 일부 멤버가 지적한 것처럼 문자열 없음 규칙을 위반할 수 있습니다. 이 답변은 수락되지 않습니다.

0게시하기 전에 코드를 테스트하십시오 .


2
주어진 출력이 잘못되었거나 명확하지 않습니다. -98 ...- 91 및 91 ... 98은 어디에 있습니까?
Oberon

27
공백 답변의 점수는 0입니다. 계속 하시겠습니까?
ace_HongKongIndependence

3
정규식 사용이 허용됩니까? 정규식 작업은 문자열 작업을 의미합니다. 목록 / 컬렉션 (및 유사한 구조)을 사용하는 것과 마찬가지로 배열을 사용하는 것과 같습니다. @wallywest의 대답은 정규식을 사용합니다. 이것이 문자열 및 / 또는 배열 사용을 금지하려고 할 때 질문에 대해 싫어하는 것입니다. 사람들은 다른 방법을 사용합니다. 답변이 실제로 올바르게 구현되면 복잡해 보이기 때문에 필요한만큼 많은 표를 얻지 못합니다.
microbian

2
"공백은 계산되지 않습니다. 코드를 올바르게 포맷하십시오!" 다른 언어의 공백은 다른 의미를 갖기 때문에 이것을 수행하는 좋은 방법은 아닙니다. 더 자주, 그것은 단지 "골프되지 않은 / 판독 가능한 버전을 게시하기"일뿐입니다.
Bob

2
@ace 공백으로 답을 만들었습니다 (4 시간의 노력이 필요합니다). 나는 그것이 0 점이라고 생각합니다.
Victor Stafusa

답변:


75

공백, 834 자 (공백을 빼면 0)

이 인터프리터 를 사용 하여 테스트했습니다.

이 작업에는 약 4 시간의 노력과 끔찍한 디버깅 작업이 필요했습니다. 그러나 끝났습니다!

   	    	 
   	    	 
	
	    	    	 
			   		    
	  			    	    		
  			   		
		    	     	
   
		    	    	 
			
	  	  	 		
   	    	 
			   	
	  	
	  	  	 		

   	   	  
   	    		
			 
    		  	  
	  	
	  	   	 	
 
   		
	  

		 	   			
  		
	  

   	   			
 
    	    	 
			
	  	  	   
   	 	 
	 	    	    	 
				  	
	  	  	  	

   	  	   
   	 	 
	 		   	    	 
				  	
	  	  	  	

 
 	  	 	 

   	  	  	
   	     	
			
	  	   		 
   	     
	
  
   	   		 
   	     	
   	
		    	    		
				
 	
   	  	 	 
   	    		
   	    		
			   	
	   		 
 
 	   	  

   	   	 	
   	    	 
			
	  	  		  
   	    	 
			   	
	  	
	  	  		  




   	  	 		
  			  	  
	
 	   	     
	
  
 
 	   	  

   	  		  
   	     
	
     		  	  
	
 	


편집 : HTML 트릭과 함께 제공되는 선택 가능한 텍스트. 여기에서 다른 곳으로 복사하여 붙여 넣은 경우 [space][tab][linefeed][linefeed][linefeed]100 줄 또는 101 줄로 정확하게 끝났는지 확인하십시오 (마지막 줄이 줄 바꿈으로 끝나는 경우 편집기가 새 줄을 세는지 여부에 따라 다름).

이 방법으로 공간을 사용할 수없는 경우, 공백을 S, 줄 바꿈으로 L및 탭을 으로 , 다음에 줄 바꿈을 고려하면 다음 TL같습니다.

SSSTSSSSTSL
SSSTSSSSTSL
TL
TSSSSTSSSSTSL
TTTSSSTTSSSSL
TSSTTTSSSSTSSSSTTL
SSTTTSSSTTL
TTSSSSTSSSSSTL
SSSL
TTSSSSTSSSSTSL
TTTL
TSSTSSTSTTL
SSSTSSSSTSL
TTTSSSTL
TSSTL
TSSTSSTSTTL
L
SSSTSSSTSSL
SSSTSSSSTTL
TTTSL
SSSSTTSSTSSL
TSSTL
TSSTSSSTSTL
SL
SSSTTL
TSSL
L
TTSTSSSTTTL
SSTTL
TSSL
L
SSSTSSSTTTL
SL
SSSSTSSSSTSL
TTTL
TSSTSSTSSSL
SSSTSTSL
TSTSSSSTSSSSTSL
TTTTSSTL
TSSTSSTSSTL
L
SSSTSSTSSSL
SSSTSTSL
TSTTSSSTSSSSTSL
TTTTSSTL
TSSTSSTSSTL
L
SL
STSSTSTSL
L
SSSTSSTSSTL
SSSTSSSSSTL
TTTL
TSSTSSSTTSL
SSSTSSSSSL
TL
SSL
SSSTSSSTTSL
SSSTSSSSSTL
SSSTL
TTSSSSTSSSSTTL
TTTTL
STL
SSSTSSTSTSL
SSSTSSSSTTL
SSSTSSSSTTL
TTTSSSTL
TSSSTTSL
SL
STSSSTSSL
L
SSSTSSSTSTL
SSSTSSSSTSL
TTTL
TSSTSSTTSSL
SSSTSSSSTSL
TTTSSSTL
TSSTL
TSSTSSTTSSL
L
L
L
L
SSSTSSTSTTL
SSTTTSSTSSL
TL
STSSSTSSSSSL
TL
SSL
SL
STSSSTSSL
L
SSSTSSTTSSL
SSSTSSSSSL
TL
SSSSSTTSSTSSL
TL
STL
L
L

32
+1 이용 "공백을 빼면 0"
Jwosty

12
하하, 나는 교훈을 배웠다. : P
duci9y

2
@Cruncher 언어는 잘 정의되어 있으며 완전히 모호하지 않습니다 . 구체적인 질문 : 숫자는 일련의 공백과 탭으로, 이진수 (공백 = 0, 탭 = 1, 빅 엔디안 이진 형식)로 숫자를 나타내며 줄 바꿈으로 끝납니다. 따라서 줄 바꿈에 도달하면 숫자가 끝나는 것을 알 수 있습니다.
Tim S.

1
오늘 공백을 배웠습니다. codegolf.stackexchange.com/a/23216/17886
duci9y

7
"공백은 계산되지 않습니다."라고 해석합니다. 이 답변이 잘못되었음을 의미합니다. ;) +1
Tim Seguine

24

배쉬 + 유틸리티-20

seq -100 100|grep 9

또는 스크립트에있는 경우 21 바이트

seq -100 100|grep $1

스크립트를 실행하려면

sh myscript 9

4
grepbash또는 이 아닙니다 sh. 또 다른 유틸리티입니다!
devnull

나는 동의해야한다, 그것은 순수한 쉘 / bash가 아니다 :)
Nik O'Lai

1
질문을 참조하십시오. 대답을 명심하십시오. 동일한 답변이 이미 게시되어 있습니다. 꿰매다! +1
The Hat

6
나는 이것이 문자열을 사용하고 있다고 생각합니다.
David Conrad

1
@DavidConrad 그런 식으로 보면 모든 것이 문자열을 사용합니다. 프로그램 소스는 문자열입니다. 터미널은 문자열을 사용합니다. 기타
대령 삼십이

9

자바 스크립트 133-1 = 132

분명히이 버전에는 문제가 없었을 것입니다 ...?

for(k=prompt(),c=console,j=-100;100>=j;j++)if(i=j,0==j&j==k)c.log(0);else for(;i;)if(h=i%10,h=0>h?-h:h,i=i/10|0,h==k){c.log(j);break}

PROMPT: 2
CONSOLE.LOG:
-92
-82
-72
-62
-52
-42
-32
-29
-28
-27
-26
-25
-24
-23
-22
-21
-20
-12
-2
 2
 12
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 32
 42
 52
 62
 72
 82
 92

CONTROL, using zero
PROMPT: 0
CONSOLE.LOG:
    -100
    -90
    -80
    -70
    -60
    -50
    -40
    -30
    -20
    -10
      0
     10
     20
     30
     40
     50
     60
     70
     80
     90
    100

1
조금 더 짧은 : for(i=-100,r=prompt();101>i;i++)(i+'').match(r)&&console.log(i).
VisioN

2
나는이 대답을 좋아하지만 (+1) 문자열을 암시 적으로 사용하지 않습니까?
Charles

2
이것은 암시 적 문자열 변환을 사용합니다
Claudiu

1
실제로 챕터는 아닙니다. alert(RegExp(9).test(99))숫자에만 기반을 둔 trueJavaScript는 느슨하게 입력하는 타이핑 시스템으로 인해 반환 됩니다. 그들이 문자열은 여전히 숫자 것처럼 당신이 읽을 수있는 코드를 변경하는 경우 기능이 ... 숫자로 작업 r=RegExp(x=+prompt());for(i=-100;101>i;i++)r.test(i)&&console.log(i);console.log(typeof(x));console.log(typeof(i))을하고 실행, 최종 대해서 typeof 응답 보여줄 것이다 x하고 i있는 번호와 같은 ... 인체 공학적, 내가 사용하지 않는 문자열 ...
WallyWest

2
@VoronoiPotato 인쇄는 또한 문자열 op입니다. 그러나 우리는 분명히 그렇게해야합니다.
Tim Seguine


6

루비 : 92 자

s=gets.to_i
$><<(-100..100).select{|n|a=n.abs;loop{break""if a%10==s;break if 0==a/=10}}*" "

읽을 수있는 버전 :

searchfor = gets.to_i
$><< (-100..100).select { |number|
  absnumber = number.abs
  loop {
    break "" if absnumber % 10 ==s
    break if 0 == absnumber /= 10
  }
} * " "

샘플 실행 :

bash-4.2$ ruby -e 's=gets.to_i;$><<(-100..100).select{|n|a=n.abs;loop{break""if a%10==s;break if 0==a/=10}}*" "' <<< 9
-99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -79 -69 -59 -49 -39 -29 -19 -9 9 19 29 39 49 59 69 79 89 90 91 92 93 94 95 96 97 98 99

시운전 :

bash-4.2$ for i in {0..9}; do diff -w <(ruby -e 's=gets.to_i;$><<(-100..100).select{|n|a=n.abs;loop{break""if a%10==s;break if 0==a/=10}}*" "' <<< $i) <(seq -100 100|grep $i|tr \\n \ ) > /dev/null; echo "$i : $?"; done
0 : 0
1 : 0
2 : 0
3 : 0
4 : 0
5 : 0
6 : 0
7 : 0
8 : 0
9 : 0

0테스트에 실패합니다 .
duci9y

죄송합니다. 당신 말이 맞아요, @ duci9y. 수정했습니다.
manatwork

6

K-45 자

수상 경력이 없지만 K 골프는 과소 평가됩니다. K는 적절한 간격으로 더 예쁘지 않습니다 .K는 어떤 공백이 중요하지 않은지에 대해 매우 까다로워지기 때문에 그대로 두겠습니다.

{|a@&x _in'@[10_vs'_ _abs a:100-!201;100;0,]}

설명 :

  • a:100-!201-0에서 200까지의 목록을 만든 다음 100에서 뺍니다. 이제 -100에서 100까지의 숫자가 있지만 질문의 사양에서 거꾸로 나타납니다. 나중에 언제든지 수정할 수 있으므로 지금은에 할당하면됩니다 a.
  • _ _abs-K가 어떤 이유로 든 _abs부동 소수점 결과를 제공해야 한다고 생각하기 때문에이 숫자의 절대 값을 확인하십시오 . 고맙게도, 그것들을 바닥 처리하면 정수로 다시 변환됩니다.
  • 10_vs'-각 ( ') 정수를 밑이 10 인 숫자로 확장합니다 ( _vs"스칼라의 벡터"를 나타냄). '원자에서 작동하기 때문에 위의 함수 에서 각 연산자를 사용할 필요는 없습니다 .
  • @[...;100;0,]-인덱스 100에서 목록의 항목을 수정하십시오 (빈 목록, 0을 밑 10으로 확장 한 결과 임) 0,. 앞에 0을 추가합니다. 이 수정이 없으면이 기능은 입력 0에서 실패합니다.
  • &x in'-이제 우리가 위에서 조심스럽게 만든 확장의 각 ( )에 숫자가있는 인덱스 ( &)를 반환하십시오 .x_in'
  • |a@-마지막으로이 색인을 사용하여 색인을 생성 a하고 목록을 올바른 순서로 뒤집습니다.

K 인터프리터에 손을 대면 행운이 있지만 사용법은 분명합니다. Github 에는 컴파일 할 수 있는 오픈 소스 구현 이 있습니다.

  {|a@&x _in'@[10_vs'_ _abs a:100-!201;100;0,]} 0
-100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100
  {|a@&x _in'@[10_vs'_ _abs a:100-!201;100;0,]} 5
-95 -85 -75 -65 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -45 -35 -25 -15 -5 5 15 25 35 45 50 51 52 53 54 55 56 57 58 59 65 75 85 95

K와 같은 언어 가이 질문과 같은 시나리오 이외의 생산적인 용도로 사용되는지 궁금합니다. 그들은 할?
duci9y

2
@ duci9y 사실, K는 특히 고유의 데이터베이스 소프트웨어 인 KDB를 사용하여 고속, 대량 거래를 처리하는 월스트리트에서 틈새 시장을 발견했습니다. 친밀한 J 도 기업 및 학문적 맥락에서 더 많이 사용됩니다.
algorithmshark

대단해! 난해한 언어는 단지 재미를위한 것이라고 믿었습니다. 그렇지 않다는 것을 알게되어 반갑습니다.
duci9y

설명에 "배열을 사용할 수 없습니다"라고 표시되어 있지 않습니까?
Omar

6

세게 때리다 55 49 자 :

(공백을 세지 않음 &&)

for i in {-100..100}
do
  [[ $i =~ $1 ]] && echo $i
done

다음과 같이 말하여 실행하십시오.

bash filename 9

생산 :

-99
-98
-97
-96
-95
-94
-93
-92
-91
-90
-89
-79
-69
-59
-49
-39
-29
-19
-9
9
19
29
39
49
59
69
79
89
90
91
92
93
94
95
96
97
98
99

두 개의 추가 포인트에 대해 "&&"를 "&&"로 바꿀 수 있습니다. 또한 후행 줄 바꿈을 삭제하면 문자가 하나 줄어 듭니다.
디지털 외상

1
스크래치-방금 새 규칙을 보았습니다. "편집 : 공백은 계산되지 않습니다. 코드를 올바르게 포맷하십시오!" . 공백이 아닌 문자를 모두 세는 것 같아요?
디지털 외상

그런 다음 ;s를 개행으로 변환하고 2 점을 저장할 수 있습니다.
joeytwiddle

4

PHP 67 바이트 :

for($i=-100;$i<101;++$i)if(strpos($i,$_GET[n])!==!1)echo$i,PHP_EOL;

예, 'strpos'전화가 있지만 숫자 만 사용하고 있습니다!

다음은 'ungolfed'버전입니다.

for($i=-100;$i<101;++$i)
{
    if(strpos($i,$_GET[n])!==false)
    {
        echo $i,PHP_EOL;
    }
}

이것이 작동하려면 여기에서 테스트 할 수 있습니다 : http://writecodeonline.com/php/

$_GET[n]='<number>';코드의 시작 부분에 추가 해야합니다.

또는 램프 또는 xampp 서버 ?n=<number>에서 파일 이름 뒤에 매개 변수를 사용하여 페이지를 작성한 후 브라우저에서 페이지에 액세스 할 수 있습니다 .


1
이것은 문자열 없음 규칙을 위반하여 암시 적 문자열 변환처럼 보입니다.
VoronoiPotato

내 잘못이 아니야 나는 언어를 만들지 않았다. 내가 가진 것을 사용했습니다. 또한 내부적으로 변환됩니다. 코드를 처리하는 코드에는 아무것도 없습니다 (출력 제외).
Ismael Miguel

내가 규칙을 읽는 방식은 숫자를 산술적으로 다루어야합니다. 사용자 나 언어 또는 라이브러리에 관계없이 문자열로 처리하는 것은 제한이 없습니다. 그러나 거의 모든 사람들이 비슷한 방식으로 규칙을 따르고 있습니다.
David Conrad

글쎄, 모두가 가장 작은 방법으로 끝내기를 원합니다. 그리고 가장 작은 것은 숫자를 문자열로 취급합니다 (내부적으로 코드에서 문자열로 암시 적으로 변환하지 않음).
Ismael Miguel

4

매스 매 티카 28

죄송합니다. 저항 할 수 없었습니다.

:)

지침은 "0과 9 사이의 숫자를 제공하면 (함수), 함수 / 서브 루틴은 주어진 숫자를 포함하는 -100과 100 사이의 모든 숫자를 인쇄해야합니다."


다음은 이러한 모든 숫자를 순서대로 인쇄합니다.

f@n_ :=Print/@Range[-100,100]

특별한 보너스로서, 주어진 숫자를 포함하지 않는 같은 범위의 숫자를 인쇄합니다. :)


그러나 이것은 필터로 n을 사용하지 않습니다
Murta

@ Marta, 예, 기술적으로 적절한 대답을 제공하면서 퍼즐의 의도를 전복했습니다 (그래서 "죄송합니다"라고 말한 이유).
DavidC

4

내 첫 번째 시도, 아마도 내가 잘못하고있는 일이 있습니다. 실례합니다
.

자바-199 자

intx=System.in.read()-48;for(inti=-100;i<101;i++){if((i<10&&i==-x)||(i>-10&&i==x)||(i<-9&&((i/100==x&&i<-99)||i%10==-x||i/10==-x))||(i>9&&((i/100==x&&i>99)||i%10==x||i/10==x)))System.out.println(i);}

더 읽기 쉬운 형식은 다음과 같습니다.

int x = System.in.read() - 48;
for(int i = -100; i < 101; i++) {

    if((i < 10 && i == -x) || (i > -10 && i == x)
        || (i < -9 && ((i / 100 == x && i < -99 ) || i % 10 == -x || i / 10 == -x))
        || (i > 9 && ((i / 100 == x && i > 99) || i % 10 == x || i / 10 == x)))

        System.out.println(i);

}

기본 아이디어가 그렇게 나쁘지는 않지만 모든 경우에 마침내 해결하기 위해 너무 많은 예외가 필요하다고 생각합니다 ... : /


죄송합니다, 다음과 작동하지 않습니다 0:(
duci9y

아, 물론 마지막으로 추가했습니다. 코드가 업데이트되었으므로 이제 199로 줄었습니다. 지적 해 주셔서 감사합니다!
Jochen Reinschlüssel

하나도 몰랐다 : D 지난 날에 너무 많은 모국어 코딩
;;

압축 버전에서 모든 단일 공간을 제거했습니다. 그러면 오류가 발생하지 않습니까? 예 : 첫 4 자 : intx...해서는 안됩니다 : int x?
SirPython

4

C - 104 107 114 문자 - 0 = 104 107 114

a,b;main(i){i=getchar()-48;for(a=-100;a<101;a++){for(b=a;a&&abs(a%10)!=i;a/=10);if(a|!i&!b)printf("%i ",b);a=b;}}

언 골프 드 :

#include <stdio.h>

int a, b;

int main(int i) {
    i = getchar() - '0';
    for( a = -100 ; a < 101 ; a++ ) {
        for( b = a ; a && abs(a % 10) != i ; a /= 10 );
        if( a | !i & !b )
            printf("%i ", b);
        a = b;
    }
}

좋은. 적절한 공백이있는 ungolfed 버전을 게시 할 수 있습니까?
duci9y

@ duci9y 추가했습니다.
Oberon

결과가 순서대로 출력되지 않습니까? (주문이 중요하다고 사양이 업데이트되었습니다.)
Gaffi

@Gaffi 그럼. 코드를 편집하겠습니다.
Oberon

4
0포함 된 것을 알 수 없습니다 0.
ugoren

3

R 87 93

개선 사항은 다음과 같습니다.

a=scan();r=-100:100;s=abs(r);r[(!a&!r%%10)|a&(a==s%%10|a==floor(s/10)|a==floor(s/100))]

(잠재적으로) 노트와 함께 더 읽기 쉽습니다.

a=scan() # take user input of selected digit
r=-100:100 # define our scanning range
s=abs(r) # copy the range as the absolute value for proper floor() calculation
#r[<criteria>] is functionally the same as subset(r,<criteria>)
r[ # when any of the criteria below are met, use that value from the range
    (!a & !r%%10) # case when input is 0, !a is evaluated as "a when a<>0 == true"
    | a & # all other digits below
    a==s%%10
    |
    a==floor(s/10)
    |
    a==floor(s/100)
    ] # R does not require a print command, so this as-is will display the corresponding values

왜 공백이 없습니까?
duci9y

@ duci9y 필요하지 않기 때문입니다. 더 잘 읽을 수 있도록 형식을 지정하고 추가하기 만하면됩니다.
Gaffi

와 함께 작동하지 않습니다 0.
duci9y

@ duci9y 실패하지 않습니다. 원래 게시물 DID가 실패하여 원래 게시물 (+ 2 문자)에서 약간의 변경을했습니다 0. 이 최신 버전을 사용해 보셨습니까? R 3.0.1을 사용하고 있습니다.
Gaffi

@ duci9y 분명히하기 위해, 당신 은 내 코드의 최신 버전 에서 이것을 사용했음을 의미했습니다 . 내 R 버전은 가장 최신 버전과 비슷해야합니다. 그러나 2. * 버전에서는 전혀 테스트하지 않았습니다.
Gaffi

3

프롤로그 : 75

f(D) :-
  between(-100,100,N) ,
  number_chars(N,Ds) ,
  member(D,Ds) ,
  writeln(N) ,
  fail
  .

이것을 어떻게 부릅니까? test.pl파일에 저장하고 시작 swipl하고 입력 consult('test')한 다음 입력했습니다 f(9). 그러나 그것은 단지 돌아왔다 false.
Martin Thoma

3

98 자의 C 답변

이것은 내가 코딩 한 가장 섹시한 것들 중 하나입니다.

main()
{
    int t=getchar()-48,i=100,j=-i;
    while ((i=t-i%10?i/10:!printf("%d\n",j)) || (i=++j<0?-j:j)<101  );
}

공백이 아닌 문자 104 개가있는 이전 버전 :

int main()
{
    int t=getchar()-48,i,j=-101;
    while(++j<101)
    {
        i=j<0?-j:j;
        while(i = t-i%10?i/10:!printf("%d\n",j));
    }
}

GCC와 CLANG을 사용하는 "나를 위해 일하십시오".


대박! Code Golf에 오신 것을 환영합니다.
duci9y

2

GNU 코어 유틸리티 (44)

read N
seq -100 100 | grep $N | tr '\n' ' '
echo

어디는 tr공간에 줄 바꿈을 변환하는 데 사용되며, echo마지막으로 줄 바꿈을 제공합니다.

$ bash ./script
9
-99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -79 -69 -59 -49 -39 -29 -19 -9 9 19 29 39 49 59 69 79 89 90 91 92 93 94 95 96 97 98 99

이것은 기존 답변 과 크게 다르지 않습니다 .
devnull

2

자바 스크립트 116

   a = 0
        for(i=-100;101>i;i++){
        m=Math
        f=m.floor
        j = m.abs(i)
        if((j>10&&f(j/10)==a)||j-f(j/10)*10==a||j/100==a){

             console.log(i)

        }
        }

2

J-27 자

모든 공백은 안전하게 제거 할 수 있으며 27자를 의미합니다. 출력 _의 음수는 음수 부호를 갖 습니다. 이는 J가 음수를 쓰는 방식입니다.

((e. 10 #.^:_1 |)"0 # ]) & (i: 100)

설명 :

  • V & (i: 100)- 주 동사 ( ) 의 오른쪽 인수로 &-100에서 100까지의 숫자 집합 ( i:100)을 묶습니다 ( V). 전체 동사의 단일 인수는 왼쪽으로 파이프됩니다.
  • (U"0 # ])- U오른쪽 인수 ( "0) 에서 각 숫자 에 대한 동사 결과를 사용하여 오른쪽 인수 ( )에서 #항목 을 선택하십시오 ].
  • (e. 10 #.^:_1 |)-왼쪽 인수로 테스트 할 숫자와 오른쪽 인수로 확인할 숫자가 주어지면 10의 밑수 ( 10 #.^:_1)에서 절대 값 ( )을 펼치고 |숫자가 해당 확장의 요소인지 확인하십시오 ( e.).

용법:

   ((e. 10 #.^:_1 |)"0 # ]) & (i: 100) 0
_100 _90 _80 _70 _60 _50 _40 _30 _20 _10 0 10 20 30 40 50 60 70 80 90 100
   ((e. 10 #.^:_1 |)"0 # ]) & (i: 100) 5
_95 _85 _75 _65 _59 _58 _57 _56 _55 _54 _53 _52 _51 _50 _45 _35 _25 _15 _5 5 15 25 35 45 50 51 52 53 54 55 56 57 58 59 65 75 85 95

J의 음수 밑줄은 항상 나를 귀찮게했습니다-출력에 (-동사를 망칠 필요없이) 빼기 기호를 사용하면 그렇게 나쁘지 않습니다.
Desty

밑줄은 J의 -Negate / Minus 동사와 음수 부호를 구별하는 모호하지 않은 (그리고 우아하고 APLish) 주장 입니다. K는 음수 부호를 "자연스럽게"숫자로 사용할 수있게하고, 우연히 K는 통사론 적 구문 클러스터로 나왔습니다. 의 선택에 정말 당신을 irking 있다면, 작업 ;8!:1, '4.0'8!:2또는 '-'I.@:=&'_'}":, 내 계산에 의해, 식 대신 결과 프로그램을 함수를 만들기 위해 각각 7, 11, 16 문자 원가 계산.
algorithmshark

나는 그것이 무엇인지 알고 있지만 I / O와 관련하여 약간 귀찮습니다. 누군가가 결과 문자열을 평가하려는 경우 밑줄을 인쇄하는 것보다 숫자를 인쇄 할 때 기본적으로 빼기 기호를 생성하면 더 좋을 것입니다.
Desty

2

그루비, 127

def x = args[0].toInteger()
for (k in -100..100)
    if (k == x)
        print " ${k}"
    else
        for (n = Math.abs(k); n > 0; n = (int) n / 10)
            if (n % 10 == x) {
                print " ${k}"
                break
            }

문자열 없음 (숫자 사이의 공백을 제외하고), 문자 배열 또는 다른 배열, 정규 표현식 없음. 0으로 테스트되었습니다. 출력 :

-100-90-80-70-60-50-50-40-30-20-10 10 20 30 40 50 60 70 80 90100


1
그리고 나는 오늘 새로운 언어를 발견했습니다. :)
duci9y 2016 년

2

자바 스크립트-108

정규식을 사용하기 때문에 기존 자바 스크립트 답변을 고려할지 확실하지 않으므로 해당 표현식없이 생성했습니다.

for(x=+prompt(i=-100);i<101;i++)if((j=i<0?-i:i)&&j%10==x||((j/100==x||(0|j/10)==x)&&x)||j==x)console.log(i)

다음과 같이 x 변수를 직접 입력하면 101로 단축 될 수도 있습니다.

for(x=5,i=-100;i<101;i++)if((j=i<0?-i:i)&&j%10==x||((j/100==x||(0|j/10)==x)&&x)||j==x)console.log(i)

기본적으로 div 또는 mod 연산의 절대 값이 숫자와 같은지 확인합니다 (100도 가능).


인 경우 또는 x=1인쇄에 실패합니다 . -100100
DocMax

지금 수정해야합니다
Damir Kasipovic

1잘 작동,하지만 지금 0인쇄는 1, 2, 3... 죄송합니다 여기에 말썽이 될 수 있습니다.
DocMax

x = 0을 입력하면; 그것은 정상적으로 작동하고 문제는 prompt()문자열 을 반환 한다는 것이 었습니다 . 따라서 * 1을 추가했으며 이제는 괜찮을 것입니다. 제안 해 주셔서 감사합니다
Damir Kasipovic

1
parseInt(j/10)(0|j/10)짧아 질 수 있고 암시적인 문자열을 피할 수 있습니다. (피할 수없는) 문자열 대 숫자 변환은 prompt()*1로 단축 할 수 없습니다 +prompt(). (또는 더 짧게도 기능을 시작하도록 변경하십시오 for(x=+prompt(i=-100);....
DocMax

2

GW 기본 : 공백을 제외한 107 자

1 input n
2 for i=-100 to 100
3 j=abs(i):a=j mod 10
4 if a=n then 8
5 b=j\10
6 if (b=n) and b then 8
7 if (b<10) or n<>1 then 9
8 print i
9 next

행 번호에 단일 숫자를 사용하면 공백이 제거되고 숫자가 10에 도달하기 위해 한 줄에 여러 명령문을 실제로 둘 필요가 없습니다.


2

그루비, 71

f={z->
  _=10
  (-_*_.._*_).grep {
    a=it.abs()
    b=a%_==z
    a<_?b:b||(int)(a/_)%_==z
  }
}

println f(0)
println f(9)

결과

[-100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
[-99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -79, -69, -59, -49, -39, -29, -19, -9, 9, 19, 29, 39, 49, 59, 69, 79, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

2

자바 스크립트 96

비트 단위 또는

b=Math.abs;
a=prompt();
for(i=-100;i<101;)
    if(!(b(i++/10)^a && b(i%10)^a)||b(i)/a==100)  console.log(i)

2

Haskell, 86 75 (필요한 공백이있는 78)

f 0=[-100,-90..100]
f d=[b|b<-[-100..100],abs(b`quot`10)==d||abs(b`rem`10)==d]

언 골프 드 :

f dig =
  if dig == 0
    then [-100, 90 .. 100]
    else [num | num <- [-100 .. 100], abs (num `quot` 10) == d || abs (num `rem` 10) == d]

당신이 패턴 매칭으로 2 개 개의 라인 정의를 사용하는 경우, 즉, a 0=[-100....그리고 a d=[b|b<-....당신은 제거 할 수 if then else몇 바이트를 저장합니다.
nimi

1

파이썬-172 자

def f(x,y,z):
    if x%10==y or (x>9 and x/10==y) or (x==100 and y==1):
        print z
def g(x,y):
    f(abs(x),y,x)
    if x<100:
        g(x+1,y)
def h(y):
    g(-100,y)

파이썬 내에서 테스트하려면 :

>>> h(4)
-94
-84
-74
...
-49
-48
...

1

VBA 121

(공백 또는 Sub정의가 계산 되지 않음 ) :

Sub t(d)
For n = -100 To 100
m = Abs(n)
o = o & IIf(d = 0, IIf(d = n Mod 10, " " & n, ""), IIf(d = n Or d = m Mod 10 Or d = Int(m / 10) Or d = Int(m / 100), " " & n, ""))
Next
MsgBox o
End Sub

이 작동합니까 0?
duci9y

@ duci9y 예. 특히 때문에 :IIf(d = 0, IIf(d = n Mod 10, " " & n, "")
Gaffi

1

의미없는 공백 문자가 제거 된 perl, 117

나는 당신이 이와 같은 것을 찾고 있다고 생각합니다. stdin에서 읽고 일치 당 한 줄을 출력합니다. 인쇄에 전달 된 문자열을 제외하고 암시 적 또는 달리 정규 표현식, 배열 (또는 세트 또는 해시 또는 덮개 아래 배열 인 다른 것) 또는 문자열이 없습니다.

chomp($x=<>); for($y=-100;$y<101;++$y) { $a=abs $y; print "$y " if $a % 10 == $x || $a > 9 && int( $a/10 ) == $x || $a==100 && $x==1}; print "\n"

예 :

ski@anito:~$ echo 0 | perl -e 'chomp($x=<>); for($y=-100;$y<101;++$y) { $a=abs $y; print "$y " if $a % 10 == $x || $a > 9 && int( $a/10 ) == $x || $a==100 && $x==1}; print "\n"'
-100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 

ski@anito:~$ echo 1 | perl -e 'chomp($x=<>); for($y=-100;$y<101;++$y) { $a=abs $y; print "$y " if $a % 10 == $x || $a > 9 && int( $a/10 ) == $x || $a==100 && $x==1}; print "\n"'
-100 -91 -81 -71 -61 -51 -41 -31 -21 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -1 1 10 11 12 13 14 15 16 17 18 19 21 31 41 51 61 71 81 91 100 

ski@anito:~$ echo 2 | perl -e 'chomp($x=<>); for($y=-100;$y<101;++$y) { $a=abs $y; print "$y " if $a % 10 == $x || $a > 9 && int( $a/10 ) == $x || $a==100 && $x==1}; print "\n"'
-92 -82 -72 -62 -52 -42 -32 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -12 -2 2 12 20 21 22 23 24 25 26 27 28 29 32 42 52 62 72 82 92 

1

F # 87 92-7

let f n = {-100..100}
|>Seq.filter(fun x->abs x%10=n||abs x/10=n&&n>0)
|>Seq.iter(printf"%d ")

0이 올바르게 처리되지 않아 5 개의 문자가 추가되었습니다. (단일 숫자 값이 모두 반환됩니다.)


1

코드 골프를하는 것은 이번이 처음입니다. 꽤 흥미로운 것 같습니다. 나는 이길 수 없지만, 내가 할 수있는 것을 보여주고 싶었다.

파이썬 : 104 (가져 오기를 멀리 할 수있는 경우 89)-예제와 같이 결과를 정확하게 인쇄 해야하는 경우

from math import *

def g(x):
    t = 10
    p = lambda i: x == i % t or i >= t and p(i / t)
    for i in range(-100, 101):
        if p(abs(i)):
            print i,
    print
# g(0)
# -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100

Python : 71-출력이 함수 외부에서 수행 될 수 있고 출력에 대한 유일한 제한은 위반 숫자가 인쇄되지 않는 것입니다

f = lambda x: [(-i, i) for i in range(101) for j in (10, 100) if i % j == x or i >= j and i / j == x]
# print f(0)
# [(0, 0), (0, 0), (-10, 10), (-20, 20), (-30, 30), (-40, 40), (-50, 50), (-60, 60), (-70, 70), (-80, 80), (-90, 90), (-100, 100), (-100, 100)]

1

자바 스크립트 125 자

내 전화 에서이 작업을 수행하는 데 문제가있는 여러 편집 내용에 대해 죄송합니다. :)

function c(n,i){o=i||0;h=100;j=o-h;f=Math.abs(j);m=f/10|0;if((m==n&&m!=0)||n==f%10||f/h==n)console.log(j);if(o<h*2)c(n,o+1);}

1

Dogelang, 공백이 아닌 42 자

f=n->for i in(-100..101)=>if n in str i=>print i

내 파이썬 솔루션과 동일하며 방금 dogelang으로 변환되었습니다 .

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