Ma lampe squiggly

13

En bougeant, j'ai cassé ma lampe. Maintenant, j'en ai besoin d'un nouveau. C'est ton boulot de me faire une lampe! Je ne sais pas quelle taille je veux, bien que je sache que je veux une taille ondulée.

Votre programme / fonction doit prendre une entrée numérique et imprimer une lampe avec autant de gribouillis / bosses.

Exemples:

Contribution:2

Production:

/ - \
 ()
 ()
/ __ \

Contribution:3

Production:

/ - \
 ()
 ()
 ()
/ __ \

Contribution:5

Production:

/ - \
 ()
 ()
 ()
 ()
 ()
/ __ \

Règles:

  • 0 et les nombres négatifs n'ont pas d'importance
  • Pour donner aux lampes (un ce défi) plus d'une variété, vous devez changer l'abat-jour.
    • Ils doivent avoir 4 caractères de large et 1 caractère de haut.
    • Ils peuvent être de n'importe quelle forme, y compris les formes sans abat-jour.
    • Ils ne doivent pas contenir d'espaces.
    • La base doit rester la même.
  • Vous devez montrer un exemple d'entrée et de sortie avec votre abat-jour.
  • Le code le plus court gagne!
phase
la source
Mais ça ne gribouille pas du tout!. J'aurais adoré si les entrées> 5 le faisaient gribouiller.
Optimizer
22
J'ai voté contre. Je pense que c'est un art ASCII ennuyeux. Il y a une section répétée au milieu et aucun chevauchement entre les pièces, qui sont également trop courtes pour être compressées. Il a juste une forme ABBB..BBBC. L'obligation de modifier une section signifie simplement que les gens utiliseront une courte chaîne intégrée.
xnor
7
Vous pouvez déjà tous arrêter de voter en aval! Je pense que OP a compris le message.
xnor
1
@xnor Je suis désolé pour le pauvre gars. C'est probablement l'une des questions les moins votées de
Beta Decay
1
Je n'ai pas voté en aucune façon moi-même, mais étant donné la similitude avec Draw an Lightning Bolt ASCII , je peux comprendre les downvoters. Une petite torsion comme avoir une base plus grande pour une lampe plus haute, ou avoir une décoration répétée uniquement sur chaque nième gribouillis le rendrait un peu différent.
manatwork

Réponses:

4

Pyth - 16 octets

Utilise des guillemets pour l'ombre puisque N est préinitialisé à cela.

*N4VQ+d`();"/__\

Essayez-le en ligne ici .

* 4            String repetition 4x, implicit print
 N             Preinitialized to Quote
VQ             For N in range(Q)
 +             String concat
  d            Space
   `()         Repr of empty tuple
;              Close for loop
"/__\          Implicitly print string, implicit close quote

Échantillon pour 5:

""""
 ()
 ()
 ()
 ()
 ()
/__\
Maltysen
la source
7

Snowman 0.2.0 , 42 caractères

)vg10sB]"[--]
"sP:" ()
"sP;bR"/__"sP92wRsP

Exemple d'exécution:

llama@llama:...Code/snowman/ppcg53483lamp$ snowman lamp.snowman
5
[--]
 ()
 ()
 ()
 ()
 ()
/__\

J'ai donc seulement remarqué que j'avais oublié de mettre en œuvre la possibilité d'échapper aux barres obliques inverses dans les chaînes lorsque j'ai résolu ce défi. Ce sera certainement quelque chose dans la prochaine version, mais pour l'instant, voici ce que j'ai fait pour imprimer la ligne finale:

"/__"sP92wRsP

92est le code ASCII d'une barre oblique inverse, l' wRenveloppe dans un tableau, et je peux maintenant l'imprimer avec sPparce que les "chaînes" dans Snowman ne sont en fait que des tableaux de nombres.

Poignée de porte
la source
7
Voulez-vous construire une lampe à neige?
Alex A.
3

> <> , 43 41 38 octets

"\__/"aiv
"&-1v!?:<&a" ()
~"!_\
?!;o>l

L'entrée via un point de code, par exemple l'espace est de 32. Cela utilise une partie du propre code du programme comme abat-jour, résultant en quelque chose qui ressemble à une antenne parabolique:

~\_!
 ()
 ()
 ()
 ()
 ()
/__\

(Suggestion grâce à @randomra)

Pour trois octets supplémentaires, nous pouvons modifier la troisième ligne pour ajouter un peu plus de personnalisation:

"\__/"aiv
"&-1v!?:<&a" ()
__\"\~"/
?!;o>l

Cela produit l'une de ces lampes qui projettent de la lumière vers le haut, faute d'un meilleur moyen de la mettre:

\__/
 ()
 ()
 ()
 ()
 ()
/__\
Sp3000
la source
3

R, 54 52 46 octets

cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")

Dans cette version, l' entrée et la sortie sont presque mélangées:

{entrée / sortie} PUT:

> cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")
1: 4
2: 
Read 1 item
RRRR
 ()
 ()
 ()
 ()
/__\

EDIT 1 : -2 octets grâce au commentaire @manatwork.
EDIT 2 : -6 octets. Le mérite complet revient à @manatwork

Frédéric
la source
1
Ne change que l'apparence: " /_\\"devrait l'être "/__\\". BTW, est-ce \rnécessaire?
manatwork
@manatwork Cela a changé la forme du pied de la lampe, ce qui la rend plus stable + votre remarque sur \rm'a sauvé deux octets! Aurait dû relire mon code! Merci !
Frédéric
1
Hmm… Outil étrange. Impossible de le faire fonctionner de manière non interactive. Quoi qu'il en soit, cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")semble fonctionner.
manatwork
@manatwork: eh bien ... je n'ai jamais pensé que cela pourrait fonctionner! C'est en effet une bonne solution. R est plein de surprises!
Frédéric
Bonjour Frédéric, si vous êtes toujours actif sur PPCG, vous pouvez économiser 5 octets
JayCe
3

Paille , 26 octets (non concurrent)

<#~('--'
)>( ()
)-*>(/__\)>

Utiliser '--'comme abat-jour, saisir l'entrée en unaire maintenant en décimal

TuxCrafting
la source
Comment cela marche-t-il?
Conor O'Brien
@BetaDecay * donc non compétitif
Conor O'Brien
2

CJam, 18 octets

"/__\
"" ()
"ri*1$

Exemple d'exécution pour l'entrée 5:

/__\
 ()
 ()
 ()
 ()
 ()
/__\

Essayez-le en ligne ici

Optimiseur
la source
2

JavaScript ES6, 34 octets

i=>`|==|
${` ()
`.repeat(i)}/__\\`

Les nouvelles lignes sont importantes

Exemple avec entrée de 5:

|==|
 ()
 ()
 ()
 ()
 ()
/__\
Downgoat
la source
2

sed, 28 octets

s#.# ()\n#g
s#^\|$#/__\\\n#g

Prend entrée en unaire. L'ombre est la sélection évidente (identique à la base).

Essai

$ echo -n 111 | sed -f lamp.sed
/__\
 ()
 ()
 ()
/__\
Dennis
la source
1

Gema: 30 caractères

*=gema\n@repeat{*;\ ()\n}/__\\

Exemple d'exécution:

bash-4.3$ gema '*=gema\n@repeat{*;\ ()\n}/__\\' <<< 3
gema
 ()
 ()
 ()
/__\
homme au travail
la source
1

jq: 30 caractères

(Code de 29 caractères + option de ligne de commande de 1 caractère.)

8888,(range(.)|" ()"),"/__\\"

Exemple d'exécution:

bash-4.3$ jq -r '8888,(range(.)|" ()"),"/__\\"' <<< 3
8888
 ()
 ()
 ()
/__\

Test en ligne (le passage -rpar l'URL n'est pas pris en charge - vérifiez vous-même la sortie brute.)

homme au travail
la source
1

C, 54 octets

Appelez f()avec la hauteur souhaitée de la lampe.

f(n){for(puts("||||");n--;puts(" ()"));puts("/__\\");}

Essayez-le sur ideone.

Exemple de sortie pour 5:

||||
 ()
 ()
 ()
 ()
 ()
/__\
owacoder
la source
1

Pyke, 15 octets

" ()"~mQAD"/__\

Essayez-le ici!

     ~m         - 1000
" ()"           -  " ()"
       QAD      - duplicate(^) input times
          "/__\ - "/__\"

Les sorties:

1000
 ()
 ()
/__\
Bleu
la source
1

Espace , 169 octets

[S S S N
_Push_0][T  N
T   T   _Read_STDIN_as_integer][S S S T S T T   T   S S N
_Push_92_\][S S S T S T T   T   T   T   N
_Push_95__][S N
S _Duplicate_95__][S S S T  S T T   T   T   N
_Push_47_/][N
S S N
_Create_Label_LOOP][S S S N
_Push_0][T  T   T   _Retrieve_at_address_0][S S S T N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate][S S S N
_Push_0][S N
T   _Swap_top_two][T    T   S _Store_at_address_0][N
T   T   S N
_If_neg_Jump_to_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S T S S T   N
_Push_41_)][S S S T S T S S S N
_Push_40_(][S S S T S S S S S N
_Push_32_space][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S S S S T   N
_Push_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][N
S S T   N
_Create_Label_LOOP_2][T N
S S _Print_as_character][N
S N
T   N
_Jump_to_Label_LOOP_2]

Lettres S(espace), T(tabulation) et N(nouvelle ligne) ajoutées uniquement en surbrillance.
[..._some_action]ajouté à titre d'explication uniquement.

Essayez-le en ligne (avec des espaces bruts, des tabulations et des nouvelles lignes uniquement).

Explication en pseudo-code:

Pousse tous les caractères dans l'ordre inverse dans la pile, puis les imprime en boucle.

Integer i = STDIN as input
Push "\__/" to the stack
Start LOOP:
  i = i - 1
  if(i is negative):
    Go to function PRINT
  Push "\n)( " to the stack
  Go to next iteration of LOOP

function PRINT:
  Push "\n!!!!" to the stack
  Start LOOP_2:
    Print top as character to STDOUT
    Go to next iteration of LOOP_2

REMARQUE: idans le pseudo-code ci-dessus est stocké dans le tas à chaque itération de LOOP, car nous ne voulons pas le laisser sur la pile pour être imprimé à la fin.

Kevin Cruijssen
la source
1

Toile , 8 octets

(×_¶/e⟳║

Essayez-le ici!

Explication:

(×        repeat "(" input times
  _¶/e    encase it on both sides in "_\n/"
          the 1st line is surrounded in "_" and the second ends and starts with "/"
      ⟳   rotate the string clockwise without changing characters
       ║  palindromize horizontally with 0 overlap
dzaima
la source
1

05AB1E , 17 15 13 11 octets

„ (и„/_.ø)˜∞

-2 octets (17 → 15) grâce à @EriktheOutgolfer .
-2 octets (13 → 11) après avoir été inspiré par @dzaima la réponse Canvas de .

Le capuchon est le même que la base (/__\ ).

Explication:

 (            # Literal string " ("
   и           # Repeat " (" the input amount of times
               #  i.e. " (" and 3 → [' (',' (',' (']
    „/_        # Literal string "/_"
             # Surround the list of " (" with "/_" on both ends
               #  i.e. [' (',' (',' ('] → ['/_',[' (',' (',' (',' ('],'/_']
         ˜     # Flatten this list
               #  i.e. ['/_',[' (',' (',' ('],'/_'] → ['/_',' (',' (',' (','/_']
              # Mirror each item
               #  i.e. ['/_',' (',' (',' (','/_'] → ['/__\',' () ',' () ',' () ','/__\']
               # And output the list new-line delimited (implicitly due to the mirror)

Ancienne réponse de 13 octets:

„/_D (Iиs)˜∞

Essayez-le en ligne.

Kevin Cruijssen
la source
1

Excel, 31 octets

Une fonction de feuille de calcul anonyme qui prend l'entrée sous forme numérique à partir de la plage [A1]et sort dans la cellule appelante.

Cette lampe est musicale - et aidera à égayer et à égayer votre journée.

="/\
"&REPT(" ()
",A1)&"/__\"

Production

J'aime la lampe

Taylor Scott
la source
1

PowerShell 5.1, 28 26 octets

Merci Mazzy pour 2 octets

8008;," ()"*"$args";"/__\"

Étant donné que l'ombre peut être composée de 4 caractères, l'utilisation d'un nombre enregistre une paire de guillemets. La partie la plus difficile a été de trouver une belle teinte.

Production:

PS C:\Users\ItsMe\Desktop> .\scratch.ps1 4
8008
 ()
 ()
 ()
 ()
/__\
Veskah
la source
bel abat-jour)
mazzy
1
essayez ceci8008;," ()"*"$args";"/__\"
mazzy
1

Python 2, 36 octets

print"-"*4+"\n ()"*input()+"\n/__\\"

Pour l'entrée 4:

----
 ()
 ()
 ()
 ()
/__\

Notez que pour Python, tout abat-jour utilisant des tuyaux est un octet de moins.

-1 octets grâce à @Alex!

Beta Decay
la source
1
Je pense que si vous changez l'abat-jour en un seul caractère et le multipliez par 4, vous pouvez économiser un octet:print"-"*4+"\n ()"*input()+"\n/__\\"
Alex
1

Japt , 17 octets

Æ` ()`Ãi¥² p"/__\

Essayez-le en ligne!

La sortie pour 5est:

====
 ()
 ()
 ()
 ()
 ()
/__\
Oliver
la source
Belle astuce avec le ¥.
Shaggy
@Shaggy Merci! : D
Oliver
0

SWI-Prolog, 73 60 octets

a(X):-write(golf),writef("%r",["\n ()",X]),write("\n/__\\").

a(5). les sorties

golf
 ()
 ()
 ()
 ()
 ()
/__\
Fatalize
la source
0

Julia, 36 octets

n->print("|~~|\n"*" ()\n"^n*"/__\\")

Cela crée une fonction sans nom qui prend un entier en entrée et imprime sur stdout.

Exemple:

julia> f(4)
|~~|
 ()
 ()
 ()
 ()
/__\
Alex A.
la source
0

Bash + coreutils, 37 octets

yes ' ()'|sed '1i####
'$1'{a/__\\
q}'

Les sauts de ligne sont nécessaires et comptés dans le total d'octets. GNU sed est requis.

Courir:

./squiggly_lamp.sh 2

Production:

####
 ()
 ()
/__\
seshoumara
la source
0

Rubis, 42 octets

i=gets.to_i
puts "|--|\n#{" ()\n"*i}/__\\"
dkudriavtsev
la source
0

Java 7 11, 84 83 37 octets

n->"i!!i\n"+" ()\n".repeat(n)+"/__\\"

Essayez-le en ligne.(REMARQUE: Java 11 n'est pas encore pris en charge sur TIO, doncString.repeat(int) a été émulé avecrepeat(String,int) le même nombre d'octets.)

Utilise i!!icomme capuchon.¡!!¡semble mieux , mais est de deux octets de plus.

Explication:

n->                    // Method with integer parameter and String return-type
  "i!!i\n"             //  Return the cap + new-line
  " ()\n".repeat(n)    //   appended with " ()" and a new-line `n` amount of times
  "/__\\"              //   append with "/__\"
Kevin Cruijssen
la source
0

Avant , 38 octets

I"|MM|"Wr
~W" ()"oN<s!:-1~
@W"/__\"oN<

Essayez-le en ligne!

Échantillons

1
|MM|
 ()
/__\

2
|MM|
 ()
 ()
/__\

3
|MM|
 ()
 ()
 ()
/__\
escargot_
la source
2
Pourriez-vous peut-être fournir un lien vers un environnement de test en ligne afin que l'on puisse facilement exécuter votre soumission?
Jonathan Frech
Le lien @JonathanFrech TIO est maintenant disponible
snail_
0

PHP, 38 octets

/--\<?while($argn--)echo"
 ()"?>

/__\

Enregistrer dans un fichier; courir comme pipe avec -nFou l' essayer en ligne .

Titus
la source