주어진 숫자를 포함하는 -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및 탭을 으로 , 다음에 줄 바꿈을 고려하면 다음 T과 L같습니다.

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.