一个新发现的数字:流血!


44

“诺贝尔数学奖授予了一位发现新数字的加利福尼亚教授!该数字是漂白的,他声称该数字介于6到7之间。” -乔治·卡林

在此挑战中,您将打印给定输入范围内的所有整数(包括整数)。按输入顺序升序或降序打印数字。也就是说,对于输入[n1, n2],打印上升如果n1 < n2如果n1 > n2

由于bleen现在是整数,因此可以将其用作输入。还必须将其包括在输出之间67如果适用)。还请注意-bleen存在于-7和-6之间。

输入项

[n1, n2]通过您选择的编程语言输入,范围在[-10,10](含)之间的两个Integer 。

(输入也可能包含bleen-bleen!)

输出量

打印所有以开头n1和结尾的Integer n2,包括新发现的bleen6到7之间的值。输出可以是一系列字符分隔的数字,其格式受您的语言支持,即逗号或空格分隔。输出的尾随空间是可以的。

例子

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之间的bleenteen也是吗?(并且是在6到7之间变薄吗?)
Joffan'8

5
@Joffan ...在60至70之间徘徊吗?
2013年

5
@Joffan(bleen + 7)/ 2是多少?
2013年

10
在数学中,只有领域的勋章,那里没有诺贝尔奖
。...– Graipher

8
@Graipher这就是为什么您不应该将喜剧演员的
脱口秀节目

Answers:


12

Python 3中,132个 130字节

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 '16

@ mbomb007不。
orlp

非常巧妙的解决方案,在那里有漂白和评估功能,非常好用。另一个建议:bleen=7/m用于澄清而无字符惩罚
WorldSEnder '16

@orlp是否有理由将变量命名为bleen而不只是一个数字的char?
蓝色

@muddyfish是的,必须eval将转换bleen为正确的值。
orlp

9

红宝石,114个 100 98字节

输入是带有的数组[n1, n2]。(如果它必须是两个单独的参数,1字节到从改变功能ARG g*g。Bleen必须是一个字符串,"bleen"。输出由@Jordan与他(?)初始版本授予-7字节建议的范围内。的阵列,但是之后我又打了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]

如果你让这个一个lambda你可以摆脱.map &:to_s和保存6个字节,你可以通过改变初始化更节省一个aa=*-10..10;a[4,0]=?-+b;a[18,0]=b
约旦

->*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个字节。
价值墨水

啊,我在数括号。忘了你可以忽略它们。
约旦

我应该投票赞成,还是将您留在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
我也想到了这种方法。牟礼有趣的,如果我们不得不采取任何INT范围...
亚当

...,尤其是如果我们必须包括bleenteen和bleenty等。
Adám16年

8

Python 3中,157 145 123 108 115 139个 161 158 153字节

由于Lynn,节省了22。感谢shooqie节省了17。3感谢ljeabmreosn保存。感谢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'。增加了一个大的21以解决bleenvs 的反向输入符号-bleen


2
l.index('-6')并且l.index('7')应该只是常量,不是吗?
林恩

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 '16

2
第2、4、5行可用代替for i in(4,18):l.insert(i,'bleen')
shooqie

1
@shooqie for循环缺少索引4的负号。例如,列表包含两个元素,'bleen'而不是'-bleen','bleen'
Justin

3

Ruby,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*%1到的循环3*%3,然后除以三,然后打印没有余数的数字,可以工作,但是设置bleen为该幻数会导致整数溢出,而使用该值20代替。然后将其打印在循环中的适当位置。


@ edc65我上次第一次正确阅读问题的时间是什么?
Neil

@ edc65哦,我也忘记-bleen了。呸。
尼尔

尝试过但没有输出。用法示例?
edc65'8

@ edc65 bleen.bat bleen -bleen也许?
尼尔

如我所说,没有输出。是dos / windows bat语言吗?我使用Windows 10
edc65 '16

3

JavaScript(ES6),158

好挑战,很难打高尔夫。甚至在JS中,Python和Ruby答案中使用的range方法可能也会得分更高。

(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

Swift 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

Java,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(开始,结束)。因为参数是字符串,所以将它们转换为int会占用大量空间。实质上,程序将7和-7视为bleen和-bleen。


1
好的答案,+ 1。很难想出要打高尔夫球的答案,但是我做到了。;)您的方法p可以更改为以下内容以节省6个字节: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
凯文·克鲁伊森

而且,我已经能够基于@LeakyNun首先创建完整列表的方法在Java 7中做一个较短的变体
凯文·克鲁伊森

2

Java 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

Scala,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

JavaScript(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

Python 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字节

感谢Cyoce打高尔夫球3个字节。

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

Javascript(使用外部库)(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

Python 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]。下一行获取输入并将其存储在s和中e。最后两行使用.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()在Python 2
美高

@Mego哦,哎呀呀....
noɥʇʎԀʎzɐɹƆ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.