Un numéro nouvellement découvert: bleen!


44

"Le prix Nobel de mathématiques a été attribué à un professeur californien qui a découvert un nouveau numéro! Le numéro est gonflé, ce qui, dit-il, appartient aux années 6 à 7." - George Carlin

Dans ce défi, vous imprimerez tous les nombres entiers, inclus, dans la plage de saisie donnée. Imprimer les nombres en ordre croissant ou décroissant en fonction de leur ordre de saisie. C'est-à-dire que, pour la saisie [n1, n2], affiche ascendant si n1 < n2, décroissant si n1 > n2.

Puisque bleenest maintenant un nombre entier, il peut être utilisé comme entrée. Il doit également être inclus dans la sortie, entre 6et le 7cas échéant. Notez également qu'il -bleenexiste entre -7 et -6.

Contribution

Deux nombres entiers [n1, n2]dans la plage [-10, 10], inclus, via l'entrée de votre choix du langage de programmation.

(L'entrée peut aussi contenir bleenet -bleen!)

Sortie

Imprimer tous les entiers commençant par n1et se terminant par n2, y compris les nouveaux découverts bleenentre 6 et 7. La sortie peut consister en une plage de nombres séparés par des caractères, sous une forme que votre langue prend en charge, c'est-à-dire par des virgules ou des espaces. Un espace de sortie final est acceptable.

Exemples

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

Notes complémentaires

Vous pouvez écrire un programme ou une fonction et utiliser n’importe quelle méthode standard pour recevoir des entrées et fournir des sorties.

Vous pouvez utiliser n’importe quel langage de programmation , mais les échappatoires standard ne sont pas autorisées.

C'est du , donc la réponse valide la plus courte - mesurée en octets - est gagnante.


16
Est-ce que saigner entre 16 et 17 ans aussi? (et saignement est-il entre 16 et 16?)
Joffan

5
@ Joffan ... et entre 60 et 70 ans?
Adám

5
@ Joffan Combien coûte (bleen + 7) / 2?
Adám

10
En mathématiques, il n'y a que la médaille du terrain, pas de prix Nobel là-bas ....
Graipher

8
@Graipher C'est pourquoi vous ne devriez pas compter sur l'actualité d'un comédien comme une dure nouvelle;)
Geobits

Réponses:


12

Python 3, 132 130 octets

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

Prend les entrées dans le format d'exemple suivant:

-8, bleen

Est-ce que cela fonctionne en dehors de [-10,10]?
mbomb007

@ mbomb007 Nope.
Orlp

Solution très ingénieuse avec bleen et eval, bonne solution. Une autre suggestion: utiliser bleen=7/mpour la désincarcération sans pénalité
WorldSEnder

@ orlp y a-t-il une raison pour laquelle vous avez nommé la variable bleen et pas seulement un caractère à un chiffre?
Bleu

@muddyfish Oui, il est nécessaire que le evaltraduit bleendans la valeur correcte.
Orlp

9

Ruby, 114 100 98 octets

L'entrée est un tableau avec [n1, n2]. (S'il doit y avoir deux arguments distincts, 1 octet pour changer la fonction arg de gla *g. Bleen doit être une chaîne, "bleen". Sorties d' un tableau de la gamme. Suggérée par @Jordan avec ses (?) Accorder la version initiale -7 octets, mais j'ai aussi joué au golf 7 autres après cela.

Essayez-le en ligne.

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

Version complète du programme original qui lit les entrées de 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]

Si vous en faites un lambda, vous pouvez vous en débarrasser .map &:to_set économiser 6 octets. Vous pouvez en économiser un en modifiant l’initialisation de aen a=*-10..10;a[4,0]=?-+b;a[18,0]=b.
Jordanie

Ie->*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]}
Jordanie

@ Jordan merci. Vous n'avez pas besoin d'utiliser l'astuce de tranchage pour insérer le fondu, cependant; ma composition de tableau est encore plus courte d'environ 1 octet.
Value Ink

Ah, je comptais les crochets; J'ai oublié que tu pouvais les omettre.
Jordanie

Est-ce que je devrais upvoter, ou vous laisser à exactement 4k?
NoOneIsHere

8

Pyth , 35 octets

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

Suite de tests.

La première partie, c’est K++L\-P_J++`M7"bleen"`M}7TJ-à- dire , génère ce tableau:

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

puis stocke dans K.

La deuxième partie, c'est-à-dire @LK}FxLK, trouve la sous-liste indiquée par l'entrée.


1
J'ai aussi pensé à une telle approche. Mure intéressant si nous devions prendre n'importe quelle gamme int ...
Adám

... et surtout si nous devions inclure bleenteen, et bleenty, etc.
Adám

8

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

22 sauvé grâce à Lynn. 17 sauvé grâce à shooqie. 3 sauvé grâce à ljeabmreosn. 5 sauvé grâce à 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])

Entrée comme '-10', '8'. Les pourboires sont les bienvenus pour un débutant.

Ajout de 7 pour tenir compte de -bleen. Ajout de 15 pour tenir compte des entrées inversées, comme '8','-10'. Ajout d' un grand 21 pour tenir compte des signes d'entrée inversée pour bleenvs -bleen.


2
l.index('-6')et l.index('7')devrait juste être des constantes, non?
Lynn

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

2
Bien que je ne sache pas pourquoi vous avez besoin de chaînes en premier lieu. l=list(range(-10,11))fonctionne aussi bien
shooqie

2
Les lignes 2, 4 et 5 peuvent être remplacées par for i in(4,18):l.insert(i,'bleen').
shooqie

1
@shooqie Il manque le signe négatif à la boucle for à l'index 4. Par exemple, la liste contient deux éléments: 'bleen'plutôt qu'un'-bleen','bleen'
Justin

3

Ruby, 141 octets

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

Lot, 239 186 octets

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

Fonctionne en boucle de 3*%1à 3*%3, puis en divisant par trois et en imprimant les nombres sans reste, mais définir bleence nombre magique provoque un dépassement d'entier et la valeur 20est utilisée à la place. Ceci est ensuite imprimé au point approprié dans la boucle.


@ edc65 Quand était la dernière fois que j'ai lu une question correctement pour la première fois ...
Neil

@ edc65 oh, et j'ai oublié -bleenaussi. Bah.
Neil

J'ai essayé mais pas de sortie. Exemple d'utilisation?
Edc65

@ edc65 bleen.bat bleen -bleenpeut-être?
Neil

Pas de sortie, comme je l'ai dit. Est-ce que c'est le langage de bat / windows J'utilise Windows 10
edc65

3

JavaScript (ES6), 158

Beau défi, difficile à jouer au golf. Les méthodes de plage utilisées dans les réponses Python et Ruby pourraient probablement obtenir de meilleurs résultats, même dans 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)))  

Moins joué au 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))
)  

Tester

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>


Je pense que vous avez manqué -6.
mardi

3

Swift 2.2, 342 octets

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

Testez ceci en utilisant le Swift Sandbox d'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 octets

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 with cas de test:

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

Appelez b (début, fin). Les paramètres étant des chaînes, leur conversion en ints prend beaucoup de place. Pour l’essentiel, le programme considère que 7 & -7 sont ventilés.


1
Bonne réponse, +1. C'était assez difficile de trouver quelque chose au golf auquel vous avez répondu, mais c'est ce que j'ai fait. ;) Votre méthode ppeut être modifiée à ce qui suit pour sauver 6 octets: 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;}. En outre, vous pouvez indiquer qu'il s'agit de Java 7 et peut-être ajouter une idée .
Kevin Cruijssen

De plus, j’ai pu créer une variante plus courte dans Java 7 sur la base de l’approche de @LeakyNun consistant à créer d’abord la liste complète.
Kevin Cruijssen

2

Java 7, 251 octets

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

Une approche différente, plus courte que la réponse Java 7 existante .
En outre, il est regrettable que les paramètres ne soient potentiellement pas en ordre, ce qui ajoute des octets pour les échanger.

Ungolfed & cas de test:

Essayez ici.

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

Sortie:

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 octets

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 octets

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

L'essayer

EDIT: Correctif pour la commande inversée. Merci Patrick, a raté cette condition


2

Python 3, 126 octets

L'entrée est sous la forme -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 octets

Merci à Cyoce d'avoir joué au golf 3 octets.

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

Construit toute la liste dans l’ordre, choisit les plus pertinentes. Une fonction au milieu nommée "b" semblait être le moyen le plus simple d'y parvenir. Appliquer, etc


Est-ce que tout cet espace est requis?
Cyoce

Non, et d'habitude je ne l'aurais pas eu. Merci! Edit: Je n'en ai même pas compté beaucoup. Doit avoir été à moitié endormi.
user5957401

1

Javascript (en utilisant une bibliothèque externe) (343 octets)

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

Lien vers lib: https://github.com/mvegh1/Enumerable

Capture d'écran:

entrez la description de l'image ici


-1

Python 2, 100 octets

Les quatre premières lignes génèrent la liste [-10, -9, -8, -7, 'bleen', -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 'bleen', 7, 8, 9, 10]. La ligne suivante est saisie et stockée dans set e. Les deux dernières lignes utilisent la .index()notation de découpage en liste pour obtenir la plage correcte.

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]

Fonctionne de la même manière que la réponse de Leaky Nun mais s'est développée indépendamment. Volé une méthode de saisie de orlp.

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]

Ceci est incorrect - le nombre entre -7et -6est -bleen, pas bleen. Bien que nous ayons trouvé un nouveau nombre, les règles de base de l’algèbre doivent rester constantes: 0c’est le seul nombre qui possède son propre inverse additif, du fait qu’il est l’élément identité additif. En outre, eval(input())c'est juste input()en Python 2.
Mego

@Mego oh, oops ....
nozɐɹƆ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.