Một số mới được phát hiện: chảy máu!


44

"Giải thưởng Nobel về toán học đã được trao cho một giáo sư ở California, người đã phát hiện ra một số mới! Con số này đã bị phá hủy, mà ông tuyên bố là từ 6 đến 7." --George Carlin

Trong thử thách này, bạn sẽ in tất cả các số nguyên, bao gồm, trong phạm vi đầu vào đã cho. In số tăng dần hoặc giảm dần theo thứ tự đầu vào của chúng. Đó là, đối với đầu vào [n1, n2], in tăng dần nếu n1 < n2, giảm dần nếu n1 > n2.

bleenbây giờ là số nguyên nên nó có thể được sử dụng làm đầu vào. Nó cũng phải được bao gồm trong đầu ra, giữa 67nơi áp dụng. Cũng lưu ý rằng -bleentồn tại giữa -7 và -6.

Đầu vào

Bao gồm hai số nguyên [n1, n2]trong phạm vi [-10, 10], thông qua đầu vào lựa chọn ngôn ngữ lập trình của bạn.

(Đầu vào cũng có thể chứa bleen-bleen!)

Đầu ra

In tất cả các số nguyên bắt đầu từ n1và kết thúc bằng n2, bao gồm cả số mới được phát hiện bleentrong khoảng từ 6 đến 7. Đầu ra có thể là một dải các số được phân tách bằng ký tự trong một số dạng mà ngôn ngữ của bạn hỗ trợ - đó là dấu phẩy hoặc dấu cách. Một dấu cách của đầu ra là được.

Ví dụ

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

Ghi chú bổ sung

Bạn có thể viết chương trình hoặc chức năng và sử dụng bất kỳ phương pháp tiêu chuẩn nào để nhận đầu vào và cung cấp đầu ra.

Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình nào , nhưng sơ hở tiêu chuẩn không được phép.

Đây là , vì vậy câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.


16
Là bleenteen giữa 16 và 17 cũng? (và có bị chảy máu giữa hai mươi sáu và bảy mươi không?)
Joffan

5
@Joffan ... và chảy máu từ 60 đến 70?
Adám

5
@Joffan Bao nhiêu tiền (ble + 7) / 2?
Adám

10
Trong toán học chỉ có huy chương của Trường, không có giải thưởng Nobel nào ở đó ....
Graodes

8
@Graodes Đó là lý do tại sao bạn không nên dựa vào bit standup của một diễn viên hài như một tin tức khó khăn;)
Geobits

Câu trả lời:


12

Python 3, 132 130 byte

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)])

Đưa đầu vào theo định dạng ví dụ sau:

-8, bleen

Điều này có hoạt động bên ngoài [-10,10]?
mbomb007

@ mbomb007 Không.
orlp

Giải pháp rất khéo léo với bleen và eval ở đó, một trong những tốt đẹp. Một đề xuất khác: sử dụng bleen=7/mđể làm rõ mà không bị phạt nhân vật
WorldSEnder

@orlp có một lý do bạn đặt tên cho biến số đó và không chỉ là một chữ số char?
Màu xanh

@muddyfish Có, cần evalphải dịch bleenthành giá trị chính xác.
orlp

9

Ruby, 114 100 98 byte

Đầu vào là một mảng với [n1, n2]. (Nếu nó phải là hai đối số riêng biệt, +1 byte để thay đổi hàm arg từ gthành *g. Bleen phải là một chuỗi "bleen". nhưng tôi cũng đã đánh gôn thêm 7 lần sau đó.

Hãy thử trực tuyến.

->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]}

Phiên bản chương trình đầy đủ ban đầu đọc đầu vào từ 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]

Nếu bạn biến nó thành lambda, bạn có thể thoát khỏi .map &:to_svà lưu 6 byte và bạn có thể lưu thêm một byte bằng cách thay đổi khởi tạo athành a=*-10..10;a[4,0]=?-+b;a[18,0]=b.
Jordan

Tức là->*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]}
Jordan

@Jordan cảm ơn. Mặc dù vậy, không cần sử dụng thủ thuật cắt lát để chèn bleen; thành phần mảng của tôi vẫn ngắn hơn khoảng 1 byte.
Mực giá trị

Ah, tôi đã đếm dấu ngoặc; quên bạn có thể bỏ qua chúng.
Jordan

Tôi nên upvote, hoặc để lại cho bạn chính xác 4k?
NoOneIsĐây là

8

Bình thường , 35 byte

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

Bộ thử nghiệm.

Phần đầu tiên, nghĩa là K++L\-P_J++`M7"bleen"`M}7TJtạo ra mảng này:

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

và sau đó lưu trữ nó trong K.

Phần thứ hai, nghĩa là @LK}FxLKtìm danh sách con được chỉ định bởi đầu vào.


1
Tôi cũng nghĩ về một cách tiếp cận như vậy. Thật thú vị nếu chúng ta phải thực hiện bất kỳ phạm vi int nào ...
Adám

... và đặc biệt là nếu chúng ta phải bao gồm bleenteen, và bleenty, v.v.
Adám

8

Python 3, 157 145 123 108 115 139 161 158 153 byte

Cứu được 22 nhờ Lynn. 17 tiết kiệm nhờ shooqie. 3 tiết kiệm nhờ ljispmreosn. 5 tiết kiệm nhờ Geoff Reedy.

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])

Đầu vào như thế nào '-10', '8'. Lời khuyên được chào đón cho một người mới bắt đầu.

Đã thêm 7 vào tài khoản -bleen. Đã thêm 15 vào tài khoản cho đầu vào đảo ngược như thế nào '8','-10'. Bổ sung một lượng lớn 21 vào tài khoản cho các dấu hiệu đầu vào đảo ngược cho bleenvs -bleen.


2
l.index('-6')l.index('7')chỉ nên là hằng số, không?
Lynn

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

2
Mặc dù tôi không chắc tại sao bạn cần chuỗi ở vị trí đầu tiên. l=list(range(-10,11))hoạt động tốt
shooqie

2
Dòng 2, 4, 5 có thể được thay thế bằng for i in(4,18):l.insert(i,'bleen').
shooqie

1
@shooqie Vòng lặp for thiếu dấu âm ở chỉ số 4. ví dụ: danh sách chứa hai yếu tố 'bleen'thay vì a'-bleen','bleen'
Justin

3

Ruby, 141 byte

->*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}

Ung dung

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

Mẻ, 239 186 byte

@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%%)

Hoạt động bằng cách lặp từ 3*%1đến 3*%3và sau đó chia cho ba và in các số không còn lại, tuy nhiên, việc đặt bleenthành số ma thuật đó gây ra tràn số nguyên và 20thay vào đó giá trị được sử dụng. Điều này sau đó được in ra tại điểm thích hợp trong vòng lặp.


@ edc65 Lần cuối cùng tôi đọc câu hỏi chính xác lần đầu tiên là khi nào ...
Neil

@ edc65 oh, và tôi cũng quên -bleen. Bah
Neil

Đã thử nó nhưng không có đầu ra. Ví dụ sử dụng?
edc65

@ edc65 bleen.bat bleen -bleencó lẽ?
Neil

Không có đầu ra, như tôi đã nói. Có phải ngôn ngữ bat / windows? Tôi sử dụng Windows 10
edc65

3

JavaScript (ES6), 158

Thử thách đẹp, khó chơi golf. Có lẽ các phương thức phạm vi được sử dụng trong câu trả lời của Python và Ruby có thể đạt điểm cao hơn ngay cả trong 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)))  

Ít chơi gôn

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

Kiểm tra

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>


Tôi nghĩ bạn đã bỏ lỡ -6.
betseg

3

Swift 2.2, 342 byte

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)}

Kiểm tra điều này bằng Swift Sandbox của IBM

Ung dung

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 byte

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)+" ");}

Ung dung với các trường hợp thử nghiệm:

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();
     }
}

Gọi b (bắt đầu, kết thúc). Bởi vì các tham số là các chuỗi, nên cần rất nhiều không gian để chuyển đổi chúng thành ints. Về cơ bản, chương trình coi 7 & -7 là bleen và -bleen.


1
Câu trả lời hay, +1. Khá khó khăn để đưa ra một cái gì đó để chơi golf mà bạn trả lời, nhưng tôi đã làm. ;) Phương thức của bạn pcó thể được thay đổi thành như sau để lưu 6 byte : 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;}. Ngoài ra, bạn có thể muốn nói đây là Java 7 và có thể thêm một ideone .
Kevin Cruijssen

Ngoài ra, tôi đã có thể tạo một biến thể ngắn hơn trong Java 7 dựa trên cách tiếp cận đầu tiên của @LeakyNun trong việc tạo danh sách đầy đủ.
Kevin Cruijssen

2

Java 7, 251 byte

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;}

Cách tiếp cận khác nhau ngắn hơn câu trả lời Java 7 đã có .
Ngoài ra, thật không may là các tham số có khả năng không theo thứ tự, có thêm một số byte để trao đổi chúng xung quanh.

Các trường hợp bất ngờ & thử nghiệm:

Hãy thử nó ở đây.

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));
  }
}

Đầu ra:

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 byte

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 byte

 (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)}

Thử nó

EDIT: Khắc phục để đặt hàng ngược. Cảm ơn Patrick, đã bỏ lỡ điều kiện này


2

Python 3, 126 byte

Đầu vào ở dạng -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 byte

Cảm ơn Cyoce vì đã chơi golf 3 byte.

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)]}

Xây dựng toàn bộ danh sách theo thứ tự, chọn ra những cái có liên quan. Hàm ở giữa có tên "b" dường như là cách dễ nhất để thực hiện điều đó. Áp dụng, vv


Là tất cả khoảng trắng cần thiết?
Cyoce

Không, và thường thì tôi sẽ không có nó. Cảm ơn! Chỉnh sửa: Tôi thậm chí không đếm được nhiều. Phải ngủ một nửa.
dùng5957401

1

Javascript (sử dụng thư viện bên ngoài) (343 byte)

(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()}

Liên kết đến lib: https://github.com/mvegh1/Enumerable

Ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây


-1

Python 2, 100 byte

Bốn dòng đầu tiên tạo ra danh sách [-10, -9, -8, -7, 'bleen', -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 'bleen', 7, 8, 9, 10]. Dòng tiếp theo nhận đầu vào và lưu trữ trong se. Hai dòng cuối cùng sử dụng .index()và liệt kê ký hiệu cắt để có phạm vi chính xác.

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]

Hoạt động theo cách tương tự như câu trả lời của Leaky Nun nhưng được phát triển độc lập. Lấy trộm một phương thức nhập từ orlp.

Ung dung:

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]

Điều này là không chính xác - số giữa -7-6-bleen, không bleen. Mặc dù chúng tôi đã tìm thấy một số mới, các quy tắc cơ bản của đại số phải không đổi: 0là số duy nhất là nghịch đảo phụ gia của chính nó, nhờ vào yếu tố nhận dạng phụ gia. Hơn nữa, eval(input())chỉ là input()trong Python 2.
Mego

@Mego oh, ôi ....
noɥʇʎԀʎzɐɹƆ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.