Eine neu entdeckte Nummer: Bleen!


44

"Der Nobelpreis für Mathematik wurde an einen kalifornischen Professor verliehen, der eine neue Zahl entdeckt hat! Die Zahl ist bleen, von der er behauptet, dass sie zwischen 6 und 7 liegt." - George Carlin

Bei dieser Herausforderung werden alle ganzen Zahlen einschließlich innerhalb des angegebenen Eingabebereichs gedruckt. Drucken Sie die Zahlen in aufsteigender oder absteigender Reihenfolge. Das heißt, für die Eingabe [n1, n2]wird aufsteigend gedruckt, wenn n1 < n2, absteigend, wenn n1 > n2.

Da bleenes sich nun um eine Ganzzahl handelt, kann sie als Eingabe verwendet werden. Es muss auch in der Ausgabe zwischen aufgenommen werden 6und , 7soweit anwendbar. Beachten Sie auch, dass -bleenzwischen -7 und -6 existiert.

Eingang

Zwei Ganzzahlen [n1, n2]im Bereich [-10, 10], einschließlich, über die Eingabe Ihrer Programmiersprache.

(Eingabe kann auch bleenund enthalten -bleen!)

Ausgabe

Geben Sie alle Ganzzahlen aus, die mit beginnen n1und enden n2, einschließlich der neu entdeckten bleenZahlen zwischen 6 und 7. Die Ausgabe kann eine Reihe von durch Zeichen getrennten Zahlen in einer Form sein, die Ihre Sprache unterstützt - dh durch Kommas oder Leerzeichen getrennt. Ein nachfolgender Ausgabebereich ist in Ordnung.

Beispiele

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

Zusätzliche Bemerkungen

Sie können ein Programm oder eine Funktion schreiben und jede Standardmethode zum Empfangen von Eingaben und zum Bereitstellen von Ausgaben verwenden.

Sie können eine beliebige Programmiersprache verwenden , Standardlücken sind jedoch nicht zulässig.

Das ist , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .


16
Bleenteen zwischen 16 und 17 auch? (Und ist Bleenty-Bleen zwischen Bleenty-Six und Bleenty-Seven?)
Joffan

5
@Joffan ... und Bleenty zwischen 60 und 70?
Adám

5
@Joffan Wie viel ist (bleen + 7) / 2?
Adám

10
In der Mathematik gibt es nur die Medaille des Feldes, keine Nobelpreise dort ....
Graipher

8
@Graipher Das ist der Grund, warum Sie sich nicht als harte Nachricht auf den
Aufstand

Antworten:


12

Python 3, 132 130 Bytes

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

Nimmt Eingaben im folgenden Beispielformat vor:

-8, bleen

Funktioniert das außerhalb von [-10,10]?
mbomb007

@ mbomb007 Nein.
Orlp

Sehr geniale Lösung mit Bleen und Eval dort, nette. Ein weiterer Vorschlag: bleen=7/mZur Klärung ohne Zeichenstrafe verwenden
WorldSEnder

@orlp Gibt es einen Grund, warum Sie die Variable bleen genannt haben und nicht nur ein einstelliges Zeichen?
Blau

@muddyfish Ja, es ist erforderlich , dass die evalübersetzen bleenin den richtigen Wert.
Orlp

9

Ruby, 114 100 98 Bytes

Input ist ein Array mit [n1, n2]. (Wenn es zwei separate Argumente sein müssen, +1 Byte, um das Funktionsargument von gin zu ändern *g. Bleen muss eine Zeichenfolge sein. Gibt "bleen"ein Array des Bereichs aus. Vorgeschlagen von @Jordan mit seiner (?) Anfänglichen Version, die -7 Byte gewährt. aber ich habe danach auch noch 7 weitere golfen.

Probieren Sie es online aus.

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

Ursprüngliche Vollversion des Programms, die Eingaben von folgenden Quellen liest 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]

Wenn Sie dies zu einem Lambda machen, können Sie .map &:to_s6 Bytes entfernen und sparen, und Sie können ein weiteres Byte speichern, indem Sie die Initialisierung von aauf ändern a=*-10..10;a[4,0]=?-+b;a[18,0]=b.
Jordanien

Dh->*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]}
Jordanien

@ Jordan danke. Ich brauchte den Trick nicht zu benutzen, um den Bleen einzufügen. Meine Array-Zusammensetzung ist immer noch um etwa 1 Byte kürzer.
Value Ink

Ah, ich zählte die Klammern; habe vergessen, dass du sie weglassen könntest.
Jordanien

Soll ich upvoten oder dich bei genau 4k belassen?
NoOneIsHere

8

Pyth , 35 Bytes

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

Testsuite.

Der erste Teil K++L\-P_J++`M7"bleen"`M}7TJgeneriert also dieses Array:

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

und speichert es dann in K.

Der zweite Teil findet also @LK}FxLKdie durch die Eingabe angegebene Unterliste.


1
Ich habe auch an einen solchen Ansatz gedacht. Interessant, wenn wir einen int-Bereich nehmen mussten ...
Adám

... und vor allem, wenn wir bleenteen und bleenty, etc. einschließen mussten
Adám

8

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

22 dank Lynn gerettet. 17 dank shooqie gerettet. 3 dank ljeabmreosn gerettet. 5 gerettet dank 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])

Eingabe wie '-10', '8'. Trinkgelder sind für Anfänger willkommen.

7 hinzugefügt, um zu berücksichtigen -bleen. 15 hinzugefügt, um umgekehrte Eingaben wie zu berücksichtigen '8','-10'. Es wurde eine große 21 hinzugefügt, um die umgekehrten Vorzeichen für bleenvs zu berücksichtigen -bleen.


2
l.index('-6')und l.index('7')sollte nur Konstanten sein, nein?
Lynn

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

2
Obwohl ich mir nicht sicher bin, warum du überhaupt Saiten brauchst. l=list(range(-10,11))funktioniert auch
shooqie

2
Die Zeilen 2, 4, 5 können durch ersetzt werden for i in(4,18):l.insert(i,'bleen').
Shooqie

1
@shooqie Die for - Schleife ist das negative Vorzeichen bei Index fehlt 4. zB die Liste enthält zwei Elemente , 'bleen'anstatt ein'-bleen','bleen'
Justin

3

Ruby, 141 Bytes

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

Batch, 239 186 Bytes

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

Diese Methode besteht darin, von 3*%1bis zu zu wechseln 3*%3und dann durch drei zu teilen und die Zahlen ohne Rest auszudrucken. Wenn Sie bleendiese magische Zahl jedoch festlegen, wird ein Ganzzahlüberlauf verursacht und 20stattdessen der Wert verwendet. Dies wird dann an der entsprechenden Stelle in der Schleife ausgedruckt.


@ edc65 Wann habe ich das letzte Mal eine Frage zum ersten Mal richtig gelesen ...
Neil

@ edc65 oh, und ich habe es auch vergessen -bleen. Bah.
Neil

Versuchte es aber keine Ausgabe. Anwendungsbeispiel?
Edc65

@ edc65 bleen.bat bleen -bleenvielleicht?
Neil

Keine Ausgabe, wie gesagt. Ist es DOS / Windows Bat Sprache? Ich benutze Windows 10
edc65

3

JavaScript (ES6), 158

Schöne Herausforderung, schwer zu golfen. Wahrscheinlich könnten die in Python- und Ruby-Antworten verwendeten Range-Methoden sogar in JS besser abschneiden.

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

Weniger golfen

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

Prüfung

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>


Ich denke du hast -6 verpasst.
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)}

Testen Sie dies mit der Swift Sandbox von IBM

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 Bytes

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

Ungolfed mit Testfällen:

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

Anruf b (Start, Ende). Da es sich bei den Parametern um Zeichenfolgen handelt, ist viel Platz erforderlich, um diese in Ints umzuwandeln. Im Wesentlichen behandelt das Programm 7 & -7 als Bleen und -bleen.


1
Gute Antwort, +1. Es war ziemlich schwierig, eine Antwort auf Ihre Frage zu finden, aber ich tat es. ;) Ihr Verfahren pkann wie folgt geändert werden 6 Bytes speichern: 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;}. Sie können auch angeben, dass dies Java 7 ist, und ein Ideon hinzufügen .
Kevin Cruijssen

Außerdem konnte ich in Java 7 eine kürzere Variante erstellen , die auf dem Ansatz von @LeakyNun basiert, zunächst die vollständige Liste zu erstellen.
Kevin Cruijssen

2

Java 7, 251 Bytes

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

Anderer Ansatz, der kürzer ist als die bereits vorhandene Java 7-Antwort .
Außerdem ist es bedauerlich, dass die Parameter möglicherweise nicht in der richtigen Reihenfolge sind, wodurch einige Bytes hinzugefügt werden, um sie zu vertauschen.

Ungolfed & Testfälle:

Probieren Sie es hier aus.

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

Ausgabe:

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 Bytes

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

Versuch es

EDIT: Fix für Reverse Ordering. Danke Patrick, habe diesen Zustand verpasst


2

Python 3, 126 Bytes

Die Eingabe erfolgt im Formular -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 Bytes

Danke an Cyoce für das Golfen mit 3 Bytes.

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

Erstellt die gesamte Liste in der richtigen Reihenfolge und wählt die relevanten aus. Die Funktion in der Mitte mit dem Namen "b" schien der einfachste Weg zu sein, dies zu erreichen. Übernehmen usw


Ist all das Leerzeichen erforderlich?
Cyoce

Nein, und normalerweise hätte ich es nicht gehabt. Vielen Dank! Edit: Ich habe nicht einmal viel davon gezählt. Muss halb geschlafen haben.
user5957401

1

Javascript (mit externer Bibliothek) (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()}

Link zu lib: https://github.com/mvegh1/Enumerable

Bildschirmfoto:

Bildbeschreibung hier eingeben


-1

Python 2, 100 Bytes

Die ersten vier Zeilen erzeugen die Liste [-10, -9, -8, -7, 'bleen', -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 'bleen', 7, 8, 9, 10]. Die nächste Zeile wird eingegeben und in sund gespeichert e. In den letzten beiden Zeilen wird die .index()Aufteilungsnotation verwendet und aufgelistet, um den korrekten Bereich zu ermitteln.

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]

Funktioniert genauso wie die Antwort von Leaky Nun, wurde jedoch unabhängig entwickelt. Hat eine Eingabemethode von orlp gestohlen.

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]

Dies ist falsch - die Zahl zwischen -7und -6ist -bleennicht bleen. Obwohl wir eine neue Zahl gefunden haben, müssen die Grundregeln der Algebra konstant bleiben: 0Ist die einzige Zahl, die ihre eigene additive Umkehrung darstellt, da sie das additive Identitätselement ist. Darüber hinaus eval(input())ist nur input()in Python 2.
Mego

@ Mego oh, oops ....
noɥʇʎԀʎzɥʇʎԀʎ
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.