새로 발견 된 수 : 비인!


44

"Nobel 수학상은 새로운 수를 발견 한 캘리포니아 교수에게 수여되었습니다!이 수는 6 명에서 7 명 사이입니다." -조지 칼린

이 과제에서는 주어진 입력 범위 내에서 모든 정수를 포함하여 인쇄합니다. 입력 순서에 따라 오름차순 또는 내림차순으로 숫자를 인쇄합니다. 즉, 입력의 경우 오름차순 if , 내림차순 if [n1, n2]인쇄 합니다 .n1 < n2n1 > n2

이후는 bleen이제 입력으로 사용될 수있는 정수이다. 또한 사이의 출력에 포함되어야 6하고 7해당되는 경우. 또한 -bleen-7과 -6 사이 에 존재합니다.

입력

[n1, n2]프로그래밍 언어의 선택 입력을 통한 [-10, 10] 범위의 정수 2 개 .

(입력에 bleen-bleen! 도 포함될 수 있습니다 .)

산출

6에서 7 사이에 새로 발견 된 것을 포함하여로 시작 n1하고로 끝나는 모든 정수를 인쇄하십시오 . 출력은 언어가 지원하는 일부 형식 (쉼표 또는 공백으로 구분)으로 문자로 구분 된 숫자 범위 일 수 있습니다. 출력의 후행 공간은 괜찮습니다.n2bleen

Input:  1 10
Output: 1 2 3 4 5 6 bleen 7 8 9 10 

Input:  -9 -4
Output: -9 -8 -7 -bleen -6 -5 -4

Input:  -8 bleen
Output: -8 -7 -bleen -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 bleen

Input:  9 1
Output: 9 8 7 bleen 6 5 4 3 2 1

Input:  2 -bleen
Output: 2 1 0 -1 -2 -3 -4 -5 -6 -bleen

Input:  -bleen 0
Output: -bleen -6 -5 -4 -3 -2 -1 0

Input:  bleen bleen
Output: bleen

Input:  2 2
Output: 2

추가 사항

프로그램이나 함수를 작성하고 입력을 받고 출력을 제공하는 표준 방법 을 사용할 수 있습니다 .

프로그래밍 언어를 사용할 수 있지만 표준 허점 은 허용되지 않습니다.

이것은 이므로 바이트 단위로 측정 된 가장 짧은 유효한 답변이 이깁니다.


16
16 세에서 17 세 사이의 비장도 있습니까? (그리고 bleenty-six와 bleenty-seven 사이의 블리 니티는?)
Joffan

5
@Joffan ... 그리고 60과 70 사이의 비결?
Adám

5
@Joffan (bleen + 7) / 2 얼마입니까?
Adám

10
수학에는 필드 메달 만 있고 노벨상은 없습니다 ....
Graipher

8
@Graipher 그렇기 때문에 희소식으로 코미디언의 스탠드 업 비트에 의존해서는 안됩니다.;)
Geobits

답변:


12

파이썬 3, 132130 바이트

r=round
bleen=6.1
m=1.08
a,b=eval(input())
d=1-2*(a>b)
print(*[[r(i/m),"-bleen"[i>0:]][i*i==49]for i in range(r(m*a),d+r(m*b),d)])

다음 예제 형식으로 입력을받습니다.

-8, bleen

이 밖에서 작동합니까 [-10,10]?
mbomb007

@ mbomb007 아뇨.
orlp

거기에 비장과 평가가있는 매우 독창적 인 해결책. 또 다른 제안 : bleen=7/m캐릭터 페널티없이
클리어에

@orlp는 한 자리 문자뿐만 아니라 변수 bleen이라는 이름의 이유가 있습니까?
Blue

@muddyfish 예, 올바른 값 eval으로 변환 bleen해야합니다.
orlp

9

루비, 114 (100) 98 바이트

입력은로 구성된 배열입니다 [n1, n2]. (이 두 개의 별도 인수해야하는 경우에서 함수 인수를 변경 한 바이트 g에이 *g. Bleen 문자열이어야 "bleen". 출력 범위. 자신 (?)의 초기 버전 부여 -7 바이트 @Jordan 제안들의 어레이 그 후에도 7 골을 더 떨어 뜨 렸습니다.

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

->g{a=*-10..-7,?-+b='bleen',*-6..6,b,*7..10;x,y=g.map{|v|a.index v}
y<x ?a[y..x].reverse: a[x..y]}

다음에서 입력을 읽는 원본 전체 프로그램 버전 ARGV:

b='bleen'
a=[*-10..-7,?-+b,*-6..6,b,*7..10].map &:to_s
x,y=$*.map{|v|a.index v}
puts y<x ?a[y..x].reverse: a[x..y]

이것을 람다로 만들면 .map &:to_s6 바이트를 제거 하고 저장할 수 있으며의 초기화를 a로 변경하여 하나 더 저장할 수 있습니다 a=*-10..10;a[4,0]=?-+b;a[18,0]=b.
Jordan

->*g{b='bleen';a=*-10..10;a[4,0]=?-+b;a[18,0]=b;x,y=g.map{|v|a.index v};puts y<x ?a[y..x].reverse: a[x..y]}
요르단

@ 조던 감사합니다. 그럼에도 불구하고 슬라이싱 트릭을 사용하여 비장을 삽입 할 필요는 없었습니다. 내 배열 구성은 여전히 ​​약 1 바이트 짧습니다.
Value Ink

아, 나는 괄호를 세고 있었다. 당신이 그들을 생략 할 수 잊어 버렸습니다.
Jordan

내가 공감해야합니까, 아니면 정확히 4k로 남겨야합니까?
NoOneIsHere 여기

8

Pyth , 35 바이트

K++L\-P_J++`M7"bleen"`M}7TJ@LK}FxLK

테스트 스위트.

첫 번째 부분, 즉 K++L\-P_J++`M7"bleen"`M}7TJ이 배열을 생성합니다.

['-10', '-9', '-8', '-7', '-bleen', '-6', '-5', '-4', '-3', '-2', '-1', '0', '1', '2', '3', '4', '5', '6', 'bleen', '7', '8', '9', '10']

그런 다음에 저장합니다 K.

두 번째 부분, 즉 @LK}FxLK, 입력으로 표시된 하위 목록을 찾습니다.


1
나는 그러한 접근 방식도 생각했습니다. 만약 우리가 어떤 범위를 취해야한다면 흥미로울 것이다.
Adám

... 그리고 특히 우리가 leen과 leen을 포함시켜야한다면
Adám

8

파이썬 3 157 145 123 108 115 139 161 158 153 바이트

Lynn 덕분에 22를 저장했습니다. shooqie 덕분에 17 명이 저장되었습니다. ljeabmreosn 덕분에 3 명이 저장되었습니다. Geoff Reedy 덕분에 5 명이 저장되었습니다.

a,b=eval(input())
s='-'
c='bleen'
d=a<b
l=list(map(str,range(-10,11)))[::[-1,1][d]]
x=l.insert
y=l.index
x(4,d*s+c)
x(18,(1^d)*s+c)
print(l[y(a):y(b)+1])

처럼 입력하십시오 '-10', '8'. 초보자를위한 팁을 환영합니다.

계정에 7을 추가했습니다 -bleen. 와 같이 반전 된 입력을 설명하기 위해 15가 추가되었습니다 '8','-10'. bleenvs 에 대한 반전 된 입력 부호를 설명하기 위해 큰 21을 추가했습니다 -bleen.


2
l.index('-6')그리고 l.index('7')단지 더, 상수 없어야한다?
Lynn

2
l=[str(i)for i in range(-10,11)]->l=list(map(str,range(-10,11)))
shooqie

2
왜 먼저 문자열이 필요한지 잘 모르겠습니다. l=list(range(-10,11))잘 작동
shooqie

2
2, 4, 5 행은로 교체 할 수 있습니다 for i in(4,18):l.insert(i,'bleen').
shooqie

1
루프의 인덱스 4에 부정적인 기호 누락 @shooqie 예를 들어 목록이 두 요소가 들어 'bleen'보다는'-bleen','bleen'
저스틴

3

루비, 141 바이트

->*a{
l="bleen"
s=13
a,b=a.map{|n|2*n rescue s*(n<=>?b)}
b,a,r=a,b,1if b<a
o=(a..b).map{|n|n==s ?l:n==-s ??-+l:n/2}.uniq
puts r ?o.reverse: o}

언 골프

lambda do |*args|
  bleen = "bleen"
  subst = 13 # This will stand in for "bleen"

  a, b = args.map {|arg|
    begin
      # Double the number
      2 * arg
    rescue
      # It wasn't a number, so it's "bleen" or "-bleen"; replace it with 13 or -13
      subst * (arg <=> "b")
    end
  }

  if b < a
    # If the range isn't ascending, reverse it and remember that we did
    b, a, reverse = a, b, 1
  end

  # Step through the range, replacing 13 and -13 with "bleen" and "-bleen" and
  # halving everything else
  result = (a..b).map {|n|
    if n == subst
      bleen
    elsif n == -subst
      "-" + bleen
    else
      n / 2
    end
  }.uniq # Drop duplicates

  # Reverse the result if the range was descending
  puts reverse ? result.reverse : result
end

3

배치, 239186 바이트

@set/ableen=1431655772,a=%1*3,b=%2*3,c=b-a^>^>31^|1
@for /l %%i in (%a%,%c%,%b%)do @((if %%i==20 echo bleen)&(if %%i==-20 echo -bleen)&set/aj=%%i%%3,k=%%i/3&cmd/cif %%j%%==0 echo %%k%%)

에서 루프의 작품 3*%13*%3그러나 설정 한 다음 세 가지로 나누어없이 나머지 숫자를 인쇄하는 bleen마법의 숫자는 오버 플로우 정수가 발생하고 값이 20대신 사용됩니다. 그런 다음 루프의 해당 지점에 인쇄됩니다.


@ edc65 처음으로 질문을 처음 읽었을 때는 언제였습니까?
Neil

@ edc65 아, 나도 잊었다 -bleen. 바.
Neil

시도했지만 출력이 없습니다. 사용 예?
edc65

bleen.bat bleen -bleen아마 @ edc65 ?
Neil

내가 말했듯이 출력이 없습니다. 언어 / 창구 언어입니까? 나는 윈도우 10 사용
edc65

3

자바 스크립트 (ES6), 158

골프하기 어려운 도전. 아마도 파이썬과 루비 답변에 사용되는 범위 메소드는 JS에서도 점수가 더 높을 수 있습니다.

(a,b)=>(c=x=>x<-6?x-1:x>6?x+1:1/x?x:x<'b'?-7:7,a=c(a),b=c(b),d=b>a?1:-1,a-=d,e=x=>x-7?x-(x>7):'bleen',[...Array(d*(b-a))].map((x=a+=d)=>x<0?'-'+e(-x):e(x)))  

덜 골프

(a,b)=>(
  c=x=>x<-6?x-1:x>6?x+1:1/x?x:x<'b'?-7:7,
  a=c(a),b=c(b),
  d=b>a?1:-1,
  a-=d,
  e=x=>x-7?x-(x>7):'bleen',
  [...Array(d*(b-a))].map((x=a+=d)=>x<0?'-'+e(-x):e(x))
)  

테스트

f=(a,b)=>(c=x=>x<-6?x-1:x>6?x+1:1/x?x:x<'b'?-7:7,a=c(a),b=c(b),d=b>a?1:-1,a-=d,e=x=>x-7?x-(x>7):'bleen',[...Array(d*(b-a))].map((x=a+=d)=>x<0?'-'+e(-x):e(x)))  

function go(){
  var a=A.value,b=B.value
  // make them numeric if possible
  a=isNaN(a)?a:+a
  b=isNaN(b)?b:+b
  
  O.textContent=f(a,b)
}  
go()
A <select id=A onchange='go()'>
<option>-10<option>-9<option>-8<option>-7<option>-bleen<option>-6<option>-5<option>-4<option>-3<option>-2<option>-1<option>0
<option>1<option>2<option>3<option>4<option>5<option>6<option>bleen<option>7<option>8<option>9<option>10
</select>
B <select id=B onchange='go()'>
<option>-10<option>-9<option>-8<option>-7<option>-bleen<option>-6<option>-5<option>-4<option>-3<option>-2<option>-1<option>0
<option>1<option>2<option>3<option>4<option>5<option>6<option>bleen<option>7<option>8<option>9<option selected>10
</select>
<pre id=O></pre>


나는 당신이 -6을 놓친 것 같아요.
betseg

3

스위프트 2.2, 342 바이트

func a(x:String,y:String){var k="bleen",a=Int(x) ?? (x==k ?(x==y ? -9:6):-6),b=Int(y) ?? (y==k ?6:-6),t=0,s=[Any](),f=Int(x)==nil ?x:"";if a>b{t=a;a=b;b=t};for i in a...b{if i==7 && a != 7{s.append(k)};s.append(i);if -i==7 && b != -7{s.append("-"+k)}};for v in t==0 ?s:s.reverse(){f+=" \(v)"};if Int(y)==nil&&b>0{f+=" \(y)"};print(x==y ?x:f)}

IBM의 Swift Sandbox를 사용하여이를 테스트하십시오.

언 골프

func bleen(x: String, y: String){
    var k = "bleen",
        a = Int(x) ?? (x == k ? (x == y ? -9 : 6) : -6),
        b = Int(y) ?? (y == k ? 6: -6),
        t = 0,
        s = [Any](),
        f = Int(x) == nil ? x : ""

    if a > b{
        t = a
        a = b
        b = t
    }

    for i in a...b{
        if i == 7 && a != 7{s.append(k)}
        s.append(i)
        if -i == 7 && b != -7{s.append("-" + k)}
    }

    if Int(y) == nil && b > 0{s.append(y)}

    for v in t == 0 ? s : s.reverse(){
        f+="\(v) "
    }

    print(x == y ? x : f)
}

2

자바, 271 바이트

int p(String w){if(w.contains("b"))return w.length()<6?7:-7;int i=Integer.decode(w);return i<-6?i-1:i>6?i+1:i;}void b(String s,String f){Integer l=p(s),r=p(f);for(r+=l<r?1:-1;l!=r;l-=l.compareTo(r))System.out.print(l==-7?"-bleen ":l==7?"bleen ":l+(l<-7?1:l<7?0:-1)+" ");}

테스트 케이스를 사용하지 않은 경우 :

class Bleen {
     static int p(String w) {
         if(w.contains("b"))
             return w.length() < 6 ? 7 : -7;
         int i = Integer.decode(w);
         return i < -6 ? i-1 : i>6 ? i+1 : i;
     }

     static void b(String s, String f) {
         Integer l = p(s), r = p(f);
         for(r += l<r ? 1 : -1; l != r; l -= l.compareTo(r))
             System.out.print(l == -7 ? "-bleen " : l == 7 ? "bleen ": l+(l < -7 ? 1 : l<7 ? 0 : -1)+" ");
     }

     public static void main(String[] args) {
         b("1","10"); System.out.println();
         b("-9","-4"); System.out.println();
         b("-8", "bleen"); System.out.println();
         b("9", "1"); System.out.println();
         b("2", "-bleen"); System.out.println();
         b("-bleen", "0"); System.out.println();
         b("bleen", "bleen"); System.out.println();
         b("2", "2"); System.out.println();
     }
}

b (시작, 종료)를 호출하십시오. 매개 변수는 문자열이므로이를 정수로 변환하는 데 많은 공간이 필요합니다. 기본적으로이 프로그램은 7 & -7을 비장과 -bleen으로 취급합니다.


1
좋은 대답, +1 당신이 대답 할 골프에 대해 생각해 내기가 매우 어려웠지만 나는 그랬습니다. ;) p6 바이트를 절약하기 위해 메소드 를 다음과 같이 변경할 수 있습니다 int p(String w){int x=w.length(),i;if(x>3)return x<6?7:-7;i=Integer.decode(w);return i<-6?i-1:i>6?i+1:i;}. 또한 이것이 Java 7 이라고 말하고 아마도 ideone을 추가 하고 싶을 수도 있습니다 .
Kevin Cruijssen

또한 @LeakyNun 의 첫 번째 전체 목록 작성 방법 을 기반으로 Java 7에서 더 짧은 변형 을 만들 수있었습니다 .
Kevin Cruijssen

2

자바 7, 251 바이트

import java.util.*;String b(Object...a){String q="bleen",r="";List l=new ArrayList();int j=-10,i,z,y,t;while(j<11)l.add(j++);l.add(4,"-"+q);l.add(18,q);z=l.indexOf(a[0]);y=l.indexOf(b[1]);if(y<z){t=z;z=y;y=t;}for(i=z;i<=y;)r+=l.get(i++)+" ";return r;}

기존의 Java 7 답변 보다 짧은 다른 접근법 .
또한 매개 변수가 순서에 맞지 않을 수 있으므로 유감스럽게도 일부 바이트를 추가하여 매개 변수를 바꿉니다.

언 골프 및 테스트 사례 :

여기에서 시도하십시오.

import java.util.*;
class Main{
  static String b(Object... a){
    String q = "bleen",
           r = "";
    List l = new ArrayList();
    int j = -10, i, z, y, t;
    while(j < 11){
      l.add(j++);
    }
    l.add(4, "-"+q);
    l.add(18, q);
    z = l.indexOf(a[0]);
    y = l.indexOf(a[1]);
    if(y < z){
      t = z;
      z = y;
      y = t;
    }
    for(i = z; i <= y; ){
      r += l.get(i++) + " ";
    }
    return r;
  }

  public static void main(String[] a){
    System.out.println(b(1, 10));
    System.out.println(b(-9, -4));
    System.out.println(b(-8, "bleen"));
    System.out.println(b(9, 1));
    System.out.println(b(2, "-bleen"));
    System.out.println(b("-bleen", 0));
    System.out.println(b("bleen", "bleen"));
    System.out.println(b(2, 2));
  }
}

산출:

1 2 3 4 5 6 bleen 7 8 9 10 
-9 -8 -7 -bleen -6 -5 -4 
-8 -7 -bleen -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 bleen 
1 2 3 4 5 6 bleen 7 8 9 
-bleen -6 -5 -4 -3 -2 -1 0 1 2 
-bleen -6 -5 -4 -3 -2 -1 0 
bleen 
2 

2

스칼라, 223 바이트

object B extends App{val b="bleen"
val L=((-10 to -7)++List(s"-$b")++(-6 to 6)++List(b)++(6 to 10)).map(""+_)
val Array(s,e)=args.map(L.indexOf(_))
println((if(s<=e)L.slice(s,e+1)else L.slice(e,s+1).reverse).mkString(" "))}

2

자바 스크립트 (ES6), 178 바이트

 (s,e)=>{q='bleen';t=[];for(i=-10;i<11;i++)t.push(i);t.splice(4,0,'-'+q);t.splice(18,0,q);s=t.indexOf(s);e=t.indexOf(e);s>e&&t.reverse()&&(e=22-e)&&(s=22-s);return t.slice(s,e+1)}

시도 해봐

편집 : 역 주문 수정 .Patrick,이 조건을 놓쳤습니다.


2

파이썬 3, 126 바이트

입력 양식 -5, 'bleen'

l=list(range(-10,11))
c='bleen'
s=l.insert
t=l.index
s(4,'-'+c)
s(18,c)
i,j=map(t,eval(input()))
d=1-2*(i<j)
print(l[i:j+d:d])

2

R , 110 107 바이트

3 바이트 골프를위한 Cyoce에게 감사드립니다.

a=function(x,y){e=c(-10:-7,"-bleen",-6:6,"bleen",6:10)
b=function(d)which(e==as.character(d))
e[b(x):b(y)]}

전체 목록을 순서대로 작성하고 관련 목록을 선택합니다. "b"라는 중간에있는 기능이 가장 쉬운 방법 인 것 같습니다. 적용 등


모든 공백이 필요합니까?
Cyoce

아니요, 보통은 없었습니다. 감사! 편집 : 나는 그것을 많이 계산하지 않았다. 반쯤 잤어 야 했어
user5957401

1

자바 스크립트 (외부 라이브러리 사용) (343 바이트)

(a,b)=>{r="bleen";s="-"+r;c=d=>d==r?7:(d==s?-7:d);i=c(a);j=c(b);m=Math.min(i,j);n=Math.max(i,j);w=i<=j?_.RangeTo(i,j):_.RangeDown(i,Math.abs(j-i)+1);g=i<j?6:7;if(n>-7&&m<-6){w=w.InsertWhere("-bleen",x=>x==-7)}if(m<8&&n>6){w=w.InsertWhere("bleen",x=>x==g)}if(a==r||b==r){w=w.Where(x=>x!=7)}if(a==s||b==s){w=w.Where(x=>x!=-7)}return w.ToArray()}

lib에 링크 : https://github.com/mvegh1/Enumerable

스크린 샷 :

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


-1

파이썬 2, 100 바이트

처음 네 줄은 목록을 생성합니다 [-10, -9, -8, -7, 'bleen', -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 'bleen', 7, 8, 9, 10]. 다음 줄은 입력에 저장합니다 가져 se. 마지막 두 줄 .index()은 올바른 범위를 얻기 위해 슬라이싱 표기법을 사용 하고 나열합니다.

a=range(-10,11)
b="bleen"
c=a.insert
c(17,b)
c(4,b)
s,e=eval(input())
d=a.index
print a[d(s):d(e)+1]

Leaky Nun의 답변과 같은 방식으로 작동하지만 독립적으로 개발되었습니다. orlp의 입력 방법을 훔쳤습니다.

언 골프 드 :

array = range(-10, 11)
array.insert(17, "bleen")
array.insert(4, "bleen")
start, end = eval(input())
print array[array.index(start):array.index(end) + 1]

이 잘못된 - 사이의 숫자 -7와는 -6있다 -bleen, 없다 bleen. 비록 우리가 새로운 수를 찾았지만, 대수의 기본 규칙은 일정하게 유지되어야합니다 0. 부가적인 요소이기 때문에 그 자신의 부가적인 역수 인 유일한 숫자입니다. 또한, eval(input())그냥 input()파이썬 2에
Mego

@Mego oh, 죄송합니다 ....
noɥʇʎԀʎzɐɹƆ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.