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.


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

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]

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.


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.


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

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.


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


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

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.


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 

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

Cobalah

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


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

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


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


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

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ɐɹƆ
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.