Yeni keşfedilen bir numara: bleen!


44

“Matematikte Nobel Ödülü, yeni bir sayı keşfeden Kaliforniyalı bir profesöre verildi! Sayı, 6 ile 7 arasında olduğunu iddia ettiği bleen.” - George Carlin

Bu zorlukla, verilen giriş aralığı dahil, tüm Integers'ı basacaksınız. Giriş sırasına göre artan veya azalan sayıları yazdırın. Olduğunu, giriş için [n1, n2], baskı artan eğer n1 < n2, azalan eğer n1 > n2.

Yana bleenartık girdi olarak kullanılabilen bir tamsayı sayıdır. Ayrıca, çıktıların arasında 6ve 7uygulanabilir olduğunda da dahil edilmelidir . Ayrıca -bleen-7 ile -6 arasında olduğuna dikkat edin .

Giriş

[n1, n2]Programlama dilinin seçim girişi dahil, [-10, 10] aralığında iki Tamsayı .

(Giriş ayrıca bleenve içerebilir -bleen!)

Çıktı

6 ile 7 arasında yeni keşfedilenler de dahil olmak üzere, n1başlayıp biten tüm Integers'ı yazdırın . Bir çıkış alanının boşluğu tamamdır.n2bleen

Örnekler

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

Ek Notlar

Bir program veya işlev yazabilir ve herhangi bir standart girdi alma ve çıktı alma yöntemini kullanabilirsiniz .

Herhangi bir programlama dilini kullanabilirsiniz , ancak standart boşluklara izin verilmez.

Bu , yani en kısa geçerli cevap - bayt cinsinden - kazanır.


16
16 ile 17 arasında kanama var mı? (ve bleenty-bleenty-bleenty-yedi arasındaki-bleen mi?)
Joffan

5
@ John ... ve 60 ile 70 arasında kan mı?
Adám

5
@Joffan (bleen + 7) / 2 ne kadar?
Adám

10
Matematikte sadece Saha madalyası var, orada Nobel Ödülü yok ....
Graipher

8
@Graipher Bu yüzden zor bir komedyenin standup bitine güvenmemelisin;)
Geobits

Yanıtlar:


12

Python 3, 132 130 bayt

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şağıdaki örnek formatta girdi alır:

-8, bleen

Bu dışında çalışıyor mu [-10,10]?
mbomb007

@ mbomb007 Hayır.
orlp

Orada bleen ve eval ile çok ustaca çözüm, güzel olan. Başka bir öneri: bleen=7/mkarakter cezası olmadan dağılma için kullanın
WorldSEnder

@ orlp bleen değişkenini adlandırmanızın bir nedeni var mı?
Mavi,

@muddyfish Evet, doğru değere evalçevirmek için gerekli bleen.
orlp

9

Ruby, 114 100 98 bayt

Giriş bir dizidir [n1, n2]. (İki ayrı bağımsız değişkenler olmak gerekir, dan işlev arg değiştirmek için + 1 bayt giçin *g. Bleen bir dize olmalıdır, "bleen". Çıkışlar aralığı. Onun (?), İlk halinin verilmesi -7 bayt ile @Jordan tarafından önerilen bir dizi, ama bundan sonra 7 daha golf oynadım.

Çevrimiçi deneyin.

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

Girdiyi okuyan orijinal tam program sürümü 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]

Bunu bir lambda yaparsanız, .map &:to_s6 bayttan kurtulabilir ve kurtarabilir ve başlangıç adurumuna getirerek bir tane daha kaydedebilirsiniz a=*-10..10;a[4,0]=?-+b;a[18,0]=b.
Ürdün

Yani->*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]}
Ürdün

@Jordan teşekkürler. Ancak, dalağı yerleştirmek için dilimleme numarasını kullanmanıza gerek yoktu; dizi kompozisyonum hala yaklaşık 1 byte daha kısa.
Value Ink,

Ah, parantezleri sayıyordum; onları ihmal edebileceğinizi unuttum.
Ürdün

Abartmalı mıyım yoksa tam olarak 4 saat mi bırakmalıyım?
NoOneIsHere

8

Pyth , 35 bayt

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

Test odası.

İlk bölüm, yani K++L\-P_J++`M7"bleen"`M}7TJ, bu diziyi oluşturur:

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

ve sonra içinde saklar K.

İkinci kısım, yani @LK}FxLKgirdi tarafından belirtilen alt listeyi bulur.


1
Ben de böyle bir yaklaşım düşündüm. Herhangi bir int aralığı almak zorunda olsaydı ilginç Mure ...
Adám

... ve özellikle, kanama, kanama vb. eklemek zorundaysak
Adám

8

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

Lynn'e 22 teşekkürler. Shooqie sayesinde 17 kişi kurtardı. Ljeabmreosn sayesinde 3 kişi kurtarıldı. Geoff Reedy sayesinde 5 kişi kurtardı.

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

Gibi giriş '-10', '8'. Yeni başlayanlar için ipuçları açıktır.

Hesabına 7 eklendi -bleen. Gibi ters girişi hesaba 15 eklendi '8','-10'. bleenVs için ters giriş işaretlerini hesaba katmak için büyük bir 21 eklendi -bleen.


2
l.index('-6')ve l.index('7')sadece sabit olmalı, hayır?
Lynn,

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

2
Yine de neden ilk olarak iplere ihtiyacın olduğundan emin değilim. l=list(range(-10,11))de çalışır
shooqie

2
Satır 2, 4, 5 ile değiştirilebilir for i in(4,18):l.insert(i,'bleen').
shooqie

1
döngü indeks 4 de eksi işareti eksik @shooqie örneğin liste iki unsurlarını içeren 'bleen'ziyade'-bleen','bleen'
Justin

3

Ruby, 141 bayt

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

Ungolfed

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

Toplu iş, 239 186 bayt

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

Dan döngü tarafından İşleri 3*%1için 3*%3ancak ayarlama ve daha sonra üçe bölünmesi ve hiçbir geri kalan numaralar baskı bleeno sihirli sayıya taşma tamsayı neden olur ve değer 20yerine kullanılır. Bu daha sonra döngüdeki uygun noktada yazdırılır.


@ edc65 En son ne zaman ilk kez doğru bir soru okudum ...
Neil

@ edc65 oh, ben de unuttum -bleen. Bah.
Neil

Denedim ama çıktı yok. Kullanım örneği?
edc65

@ edc65 bleen.bat bleen -bleenbelki de?
Neil

Söylediğim gibi çıktı yok. Dos / Windows yarasa dili midir? Windows 10'u kullanıyorum
edc65 21.05'te

3

JavaScript (ES6), 158

Güzel bir meydan okuma, golf oynamak zor. Muhtemelen Python ve Ruby cevaplarında kullanılan menzil yöntemleri, JS'de bile daha iyi skor yapabilirdi.

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

Daha az golf oynadı

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

Ölçek

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>


Sanırım özledin -6.
16'da 21

3

Swift 2.2, 342 Bayt

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

Bunu IBM'in Swift Sandbox'ı kullanarak test edin

Ungolfed

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 bayt

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

Test durumlarıyla affetmemiş:

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 arayın (başlangıç, bitiş). Parametreler dizge olduğundan, bunları intata dönüştürmek çok fazla zaman alır. Temel olarak, program 7 ve -7'yi dalak ve -tezen olarak ele alır.


1
Güzel cevap, +1. Cevap vereceğin golfle ilgili bir şeyler bulmak oldukça zordu, ama ben yaptım. ;) Yöntemin p6 bayt kaydetmek için aşağıdaki şekilde değiştirilebilir: 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;}. Ayrıca, bunun Java 7 olduğunu ve belki bir ideone eklediğini söylemek isteyebilirsiniz .
Kevin Cruijssen

Ayrıca, @LeakyNun ilk listesinin tamamını oluşturma yaklaşımına dayanarak Java 7'de daha kısa bir varyasyon yapabilirim .
Kevin Cruijssen

2

Java 7, 251 bayt

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

Mevcut Java 7 cevaplarından daha kısa olan farklı bir yaklaşım .
Ayrıca, parametrelerin potansiyel olarak sıralı olmaması da talihsizdir, bu da onları değiştirmek için bazı baytlar ekler.

Ungolfed ve test durumları:

Burada dene.

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

Çıktı:

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 bayt

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 bayt

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

Dene

EDIT: ters sipariş için Fix.Teşekkürler Patrick, bu durumu özledim


2

Python 3, 126 bayt

Giriş formunda -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 bayt

3 byte golf oynadığı için Cyoce'ye teşekkürler.

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

Tüm listeyi sırayla oluşturur, ilgili listeyi seçer. "B" adlı ortadaki işlev bunu gerçekleştirmenin en kolay yoluydu. Uygula, vs


Bütün bu boşluklar gerekli mi?
Cyoce

Hayır, genelde olmazdı. Teşekkürler! Düzenleme: Çok fazla saymadım bile. Yarım uykuda olmalı.
user5957401

1

Javascript (harici kütüphaneyi kullanarak) (343 bytes)

(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 için bağlantı: https://github.com/mvegh1/Enumerable

Ekran görüntüsü:

görüntü tanımını buraya girin


-1

Python 2, 100 bayt

İlk dört satır listeyi oluşturur [-10, -9, -8, -7, 'bleen', -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 'bleen', 7, 8, 9, 10]. Bir sonraki satır girişi ve depolar alır sve e. Son iki satır .index()doğru aralığı elde etmek için dilimleme notasyonunu kullanır ve listeler.

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'un cevabıyla aynı şekilde çalışır ancak bağımsız olarak geliştirilir. Orlp'den bir giriş yöntemi çaldı.

Ungolfed:

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]

Bu yanlış - arasında sayı -7ve -6bir -bleendeğil, bleen. Yeni bir sayı bulmamıza rağmen, temel cebir kuralları sabit kalmalıdır: 0ek kimlik öğesi olması nedeniyle, kendi katkı tersi olan tek sayıdır. Dahası, eval(input())sadece input()Python 2'de.
Mego

@Mego oh, oops ....
noɥʇʎԀʎzɐɹƆ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.