Nomor yang baru ditemukan: bleen!

44

"Hadiah Nobel dalam bidang matematika dianugerahkan kepada seorang profesor California yang telah menemukan nomor baru! Angka itu berwarna putih, yang ia klaim milik antara 6 dan 7." - George Carlin

Dalam tantangan ini, Anda akan mencetak semua Integer, inklusif, dalam rentang input yang diberikan. Cetak angka naik atau turun sesuai dengan urutan inputnya. Yaitu, untuk input [n1, n2], cetak naik jika n1 < n2, turun jika n1 > n2.

Karena bleensekarang merupakan bilangan integer, dapat digunakan sebagai input. Itu juga harus dimasukkan dalam output, antara 6dan di 7mana berlaku. Perhatikan juga bahwa -bleenada antara -7 dan -6.

Memasukkan

Dua Integer [n1, n2]dalam kisaran [-10, 10], inklusif, melalui input pilihan bahasa pemrograman Anda.

(Input juga dapat berisi bleendan -bleen!)

Keluaran

Cetak semua Integer mulai n1dan diakhiri dengan n2, termasuk yang baru ditemukan bleenantara 6 dan 7. Output dapat berupa serangkaian angka yang dipisahkan karakter dalam beberapa bentuk yang didukung bahasa Anda - yaitu, koma atau dipisahkan dengan ruang. Satu ruang tambahan tidak apa-apa.

Contohnya

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

Catatan tambahan

Anda dapat menulis sebuah program atau fungsi dan menggunakan metode standar apa pun untuk menerima input dan memberikan output.

Anda dapat menggunakan bahasa pemrograman apa pun , tetapi celah standar tidak diizinkan.

Ini adalah , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.

CzarMatt
sumber
16
Apakah bleenteen antara 16 dan 17 juga? (dan apakah bleenty-bleen antara bleenty-six dan bleenty-seven?)
Joffan
5
@Joffan ... dan berdarah antara 60 dan 70?
Adám
5
@Joffan Berapa (bleen + 7) / 2?
Adám
10
Dalam matematika hanya ada medali Field, tidak ada Hadiah Nobel di sana ....
Graipher
8
@Graipher Itu sebabnya Anda tidak harus bergantung pada standup bit komedian sebagai berita keras;)
Geobits

Jawaban:

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

Mengambil input dalam format contoh berikut:

-8, bleen
orlp
sumber
Apakah ini berhasil di luar [-10,10]?
mbomb007
@ mbomb007 Tidak.
orlp
Solusi yang sangat cerdik dengan bleen dan eval di sana, bagus. Saran lain: gunakan bleen=7/muntuk klarifikasi tanpa penalti karakter
WorldSEnder
@ orlp apakah ada alasan Anda menamai variabel bleen dan bukan hanya char satu digit?
Biru
@muddyfish Ya, perlu untuk evalmenerjemahkan bleenke dalam nilai yang benar.
orlp
9

Ruby, 114 100 98 byte

Input adalah array dengan [n1, n2]. (Jika harus berupa dua argumen yang terpisah, +1 byte untuk mengubah fungsi arg dari gmenjadi *g. Bleen harus berupa string "bleen",. Output array dari range. Disarankan oleh @Jordan dengan (?) Versi awalnya yang memberikan -7 byte, tapi saya juga bermain golf 7 lagi setelah itu.

Cobalah online.

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

Versi program lengkap asli yang membaca input dari 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]
Nilai Tinta
sumber
Jika Anda menjadikan ini lambda, Anda dapat menyingkirkan .map &:to_sdan menyimpan 6 byte, dan Anda dapat menyimpan satu lagi dengan mengubah inisialisasi ake a=*-10..10;a[4,0]=?-+b;a[18,0]=b.
Jordan
Yaitu->*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 terima kasih. Namun, tidak perlu menggunakan trik mengiris untuk memasukkan pemutih; komposisi array saya masih lebih pendek sekitar 1 byte.
Value Ink
Ah, saya sedang menghitung tanda kurung; lupa Anda bisa menghilangkannya.
Jordan
Haruskah saya memperbaiki, atau meninggalkan Anda tepat pada angka 4k?
NoOneIsHere
8

Pyth , 35 byte

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

Suite uji.

Bagian pertama, yaitu K++L\-P_J++`M7"bleen"`M}7TJ, menghasilkan array ini:

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

dan kemudian menyimpannya di K.

Bagian kedua, yaitu @LK}FxLK, menemukan sublist yang ditunjukkan oleh input.

Biarawati Bocor
sumber
1
Saya memikirkan pendekatan semacam itu juga. Mure menarik jika kita harus mengambil kisaran int ...
Adám
... dan terutama jika kita harus menyertakan bleenteen, dan bleenty, dll.
Adám
8

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

Disimpan 22 berkat Lynn. 17 disimpan berkat shooqie. 3 disimpan berkat ljeabmreosn. 5 disimpan berkat 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])

Masukan seperti '-10', '8'. Tips dipersilahkan untuk pemula.

Menambahkan 7 ke akun -bleen. Menambahkan 15 ke akun untuk input terbalik seperti '8','-10'. Ditambahkan besar 21 ke akun untuk tanda-tanda masukan terbalik untuk bleenvs -bleen.

Justin
sumber
2
l.index('-6')dan l.index('7')seharusnya hanya konstanta, bukan?
Lynn
2
l=[str(i)for i in range(-10,11)]->l=list(map(str,range(-10,11)))
shooqie
2
Meskipun saya tidak yakin mengapa Anda membutuhkan string di tempat pertama. l=list(range(-10,11))berfungsi juga
shooqie
2
Baris 2, 4, 5 dapat diganti for i in(4,18):l.insert(i,'bleen').
shooqie
1
@shooqie Loop for tidak memiliki tanda negatif pada indeks 4. misalnya daftar berisi dua elemen 'bleen'daripada'-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}

Tidak disatukan

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
Jordan
sumber
3

Batch, 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%%)

Bekerja dengan memutar dari 3*%1ke 3*%3dan kemudian membaginya dengan tiga dan mencetak angka-angka tanpa sisa, namun pengaturan bleenke angka ajaib itu menyebabkan integer overflow dan nilainya 20digunakan sebagai gantinya. Ini kemudian dicetak pada titik yang sesuai dalam loop.

Neil
sumber
@ edc65 Kapan terakhir kali saya membaca pertanyaan dengan benar pertama kali ...
Neil
@ edc65 oh, dan saya -bleenjuga lupa . Bah
Neil
Sudah mencobanya tetapi tidak ada output. Contoh penggunaan?
edc65
@ edc65 bleen.bat bleen -bleenmungkin?
Neil
Tidak ada output, seperti yang saya katakan. Apakah bahasa dos / windows bat? Saya menggunakan Windows 10
edc65
3

JavaScript (ES6), 158

Tantangan yang bagus, sulit untuk bermain golf. Mungkin metode rentang yang digunakan dalam jawaban Python dan Ruby dapat mencetak skor lebih baik bahkan di 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)))  

Kurang golf

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

Uji

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>

edc65
sumber
Saya pikir Anda melewatkan -6.
betseg
3

Swift 2.2, 342 Bytes

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

Uji ini menggunakan Swift Sandbox IBM

Tidak disatukan

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

Tidak disatukan dengan kasus uji:

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

Panggilan b (mulai, akhiri). Karena parameternya adalah string, dibutuhkan banyak ruang untuk mengubahnya menjadi int. Pada dasarnya program ini memperlakukan 7 & -7 sebagai pemutih dan -lembut.


sumber
1
Jawaban yang bagus, +1. Cukup sulit untuk membuat sesuatu untuk golf yang Anda jawab, tetapi saya lakukan. ;) Metode Anda pdapat diubah sebagai berikut untuk menyimpan 6 bytes: 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;}. Juga, Anda mungkin ingin menyatakan ini adalah Java 7 dan mungkin menambahkan ideone .
Kevin Cruijssen
Juga, saya bisa membuat varian yang lebih pendek di Java 7 berdasarkan pendekatan @LeakyNun untuk pertama kali membuat daftar lengkap.
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;}

Pendekatan berbeda yang lebih pendek dari jawaban Java 7 yang sudah ada .
Juga, sangat disayangkan bahwa parameter berpotensi tidak berurutan, yang menambahkan beberapa byte untuk bertukar sekitar.

Kasus yang tidak disatukan & uji:

Coba di sini.

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

Keluaran:

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 
Kevin Cruijssen
sumber
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(" "))}
Tim Robbins
sumber
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)}

Cobalah

EDIT: Perbaiki untuk pemesanan terbalik. Terima kasih Patrick, merindukan kondisi ini

Pengaturan FZ
sumber
2

Python 3, 126 byte

Input ada dalam formulir -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])
WorldSEnder
sumber
2

R , 110 107 byte

Terima kasih kepada Cyoce untuk bermain 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)]}

Bangun seluruh daftar secara berurutan, pilih yang relevan. Fungsi di tengah bernama "b" sepertinya cara termudah untuk mewujudkannya. Berlaku, dll

pengguna5957401
sumber
Apakah semua ruang putih itu diperlukan?
Cyoce
Tidak, dan biasanya saya tidak akan memilikinya. Terima kasih! Sunting: Saya bahkan tidak menghitung banyak. Pasti setengah tertidur.
user5957401
1

Javascript (menggunakan perpustakaan eksternal) (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()}

Tautan ke lib: https://github.com/mvegh1/Enumerable

Tangkapan layar:

masukkan deskripsi gambar di sini

applejacks01
sumber
-1

Python 2, 100 byte

Empat baris pertama menghasilkan daftar [-10, -9, -8, -7, 'bleen', -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 'bleen', 7, 8, 9, 10]. Baris berikutnya mendapat input dan menyimpannya di sdan e. Dua baris terakhir menggunakan .index()dan daftar notasi pengiris untuk mendapatkan kisaran yang benar.

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]

Bekerja dengan cara yang sama dengan jawaban Leaky Nun tetapi berkembang secara mandiri. Mencuri metode input dari orlp.

Tidak Disatukan:

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]
noɥʇʎԀʎzɐɹƆ
sumber
Ini tidak benar - jumlah antara -7dan -6adalah -bleen, tidak bleen. Meskipun kami telah menemukan nomor baru, aturan dasar aljabar harus tetap konstan: 0adalah satu-satunya nomor yang kebalikan aditif sendiri, berdasarkan menjadi elemen identitas aditif. Selain itu, eval(input())hanya input()dalam Python 2.
Mego
@Mego oh, oops ....
noɥʇʎԀʎzɐɹƆ