Awk, 101 + 8 bajtów

3

Awk, 101 + 8 bajtów

101 znaków plus 8 dla -v n=$1uzyskania liczby całkowitej z powłoki.

'{l="\\ \\";print"__\n"l"\n "l;for(i=1;i<n;++i)print"__"l"\n\\  __\\\n "l}END{print"  "l"\n   \\/"}'

Nowość w tej witrynie SE, niejasne, czy te parametry powinny się liczyć.

Bez golfa

awk 
-v n=$1
'{
  l="\\ \\";
  print "__\n"l"\n "l;
  for(i=1; i<n; ++i)
    print "__"l"\n\\  __\\\n "l
}
END
{
  print "  "l"\n   \\/"
}'

Przykład użycia:

lightning() { echo | awk -v n=$1 '{l="\\ \\";print"__\n"l"\n "l;for(i=1;i<n;++i)print"__"l"\n\\  __\\\n "l}END{print"  "l"\n   \\/"}'; }
lightning 3
__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/
tylko przeglądam
źródło
Oto konsensus w sprawie liczenia flag wiersza poleceń. Więc myślę, że zrobiłeś to dobrze.
Martin Ender,
Sformułujmy to jako „ obliczone tak dobrze”, ponieważ zdecydowanie nie zrobione dobrze. Jeśli przypisanie zmiennej jest wstawiane po kodzie, część nie jest potrzebna -v . Nie wspominając, że cała idea zmiennej jest niepotrzebna, podobnie jak osobny ENDblok. 89 znaków: {l="\\ \\";print"__\n"l"\n "l;for(;--$1;)print"__"l"\n\\ __\\\n "l;print" "l"\n \\/"} pastebin.com/NCznF9kH
manatwork

Odpowiedzi:

3

Python 97 82 78char:

print(("__\nl l"+"__l\  __\\\n l"*~-input()+"  l   \/").replace('l','\ \\\n'))

To jest mój pierwszy golfowy kod

@ (^ _ ^) @

Przetestuj tutaj

Pwed
źródło
To jest python 3? Czy to input () będzie działać dla liczb całkowitych?
Renae Lider,
2

C, 119 108 bajtów

p(t){for(;t;t/=4)putchar(" \\_\n"[t%4]);}main(c){for(p(13434);p(836),--c;p(57154842));p(265488);puts("/");}

Pierwsza próba, 150 bajtów

v(a){putchar(a);}s(b){b--?v(32),s(b):v(92);}l(b){s(b);s(1);v(10);}main(c){for(puts("__\n\\ \\");l(1),--c;puts("__\\ \\\n\\  __\\"));l(2);s(3);v(47);}

mainprzyjmuje argument int, więc uruchom w ten sposób: ./lightning . . .podaj 4jako argument.

aragaer
źródło
2

Python 3, 126 118 117 bajtów

Po prostu coś na początek.

n=int(input())
p=print
p('__\n\\ \\')
for i in[0]*~-n:p(r''' \ \
__\ \
\  __\
''',end='')
p(r''' \ \
  \ \
   \/
''')
Numer jeden
źródło
Jeśli nie potrzebujesz zmiennej pętli, możesz iterować koryta, [0]*(n-1)aby uzyskać n-1iteracje. Możesz także napisać (n-1)jako ~-n.
randomra
Możesz zapisać jeden bajt, zmieniając i in [0]na i in[0].
mbomb007
Witamy! Pojedyncza linia wydruku w pętli jest również krótszy: for i in[0]*~-n:p(' \\ \\\n__\\ \\\n\\ __\\').
randomra
2

Python 2, 76 bajtów

print'__\n\ \\\n \ \\\n'+r'''__\ \
\  __\
 \ \
'''*~-input()+'  \ \\\n   \/'

Wystarczy wydrukować pierwsze trzy linie, a następnie wydrukować kolejne trzy linie n-1 razy, a następnie wydrukować ostatnie 2 wiersze. Wszystko za jednym razem.

A oto fajna próba alternatywy, która (niestety) wykorzystuje dokładnie taką samą liczbę bajtów:

print('__\n| |'+'__|\  __\\\n |'*~-input()+'  |   \/').replace('|','\ \\\n')
Matty
źródło
Czy próbowałeś użyć formatowania% s dla środkowej części?
Sp3000,
@ Sp3000 Potrzebuję wokół niego nawiasów klamrowych, aby działał z *, co daje mi 77 bajtów - lub nie wstawiam go, ale kosztuje 79 bajtów. :(
Matty
2

F #, 98 znaków, 105 bajtów

let l n=(@"__♪◙\z"+String.replicate(n-1)@" \z__\z\  __\♪◙"+ @" \z  \z   \/").Replace("z"," \\\n")
Hand-E-Food
źródło
2

CJam 54 znaków

nie najkrótszy, ale odkąd zacząłem CJam dzisiaj, jestem z tego zadowolony.

rd(:T;{'__}:W~N{'\:XSXN}:V~SV{WVXSSWXNSV;N}T*SSVSSSX'/

Spróbuj

TobiasR.
źródło
2

Pascal: 149 142 141 137 znaków

var n:Word;begin
Read(n);Writeln('__'#10'\ \'#10' \ \');for n:=2to n do Writeln('__\ \'#10'\  __\'#10' \ \');Write('  \ \'#10'   \/')end.

W końcu jedyną siłą golfową Pascala jest to, że odwrotne ukośniki nie potrzebują ucieczki…

człowiek w pracy
źródło
1
for n:=2 to n dodziała również.
randomra
Dziękuję, @Randomra. Myślę, że było to około 18 lat temu, kiedy zdałem sobie sprawę z tej możliwości… Miło to zapamiętać.
manatwork
2

Arkusze Google, 60 bajtów

Anonimowa funkcja arkusza roboczego, która pobiera dane wejściowe z zakresu [A1]i dane wyjściowe do komórki wywołującej.

="__
\ \
 \ \
"&REPT("__\ \
\  __\
 \ \
",A1-1)&"  \ \
   \/
Taylor Scott
źródło
1

SpecBAS - 135 104 bajtów

Apostrof w instrukcjach PRINT przenosi kursor do nowego wiersza.

SpecBAS pozwala na włączenie znaków ASCII do ciągu #n, więc wbudowano niektóre znaki powrotu karetki (ASCII 13).

Zbudowano ciąg za pomocą znaków powrotu karetki i innych znaków, a następnie REP$powtórzono go wymaganą liczbę razy.

1 LET b$="\ \": INPUT n: PRINT "__"'b$+REP$(#13" "+b$+#13"__"+b$+#13"\  __\",n-1)'" ";b$'"  ";b$'"   \/"
Brian
źródło
1

PHP 155

$l=PHP_EOL;echo$l;echo "__$l";for($i=0;$i<$argv[1];$i++){if($i>=1)echo "__\\ \\$l\\  __\\$l";else echo "\\ \\$l";echo " \\ \\$l";}echo "  \\ \\$l   \\/$l";

Wersja bez golfa

$n = $argv[1];

echo PHP_EOL;
echo '__'.PHP_EOL;
for($i=0;$i<$n;$i++)
{
    if($i>=1) {
        echo '__\\ \\'.PHP_EOL.'\\  __\\'.PHP_EOL;

    }
    else
    {
        echo '\\ \\'.PHP_EOL;
    }   
    echo ' \\ \\'.PHP_EOL; 


}    
echo '  \\ \\'.PHP_EOL;
echo '   \\/';
echo PHP_EOL;
kuldeep.kamboj
źródło
Twój kod można ulepszyć, zmniejszając go do 121 bajtów. echo$l=PHP_EOL,"__$l";$g="\\ \\$l";for($i=0;$i<$argv[1];$i++){echo($i?"__$g\\ __\\$l":$g)," $g";}echo" $g",' \\/',$l;
Octfx
Ponadto: usuń $i=0; usuń wsporniki forpętli; zwiększ licznik wewnątrz pętli ( echo($i++?"…).
Blackhole
1

Java, 183 180 bajtów

class L{public static void main(String[]a){String b="__\n\\ \\\n \\ \\\n";for(int i=1;i<new Long(a[0]);++i)b+="__\\ \\\n\\  __\\\n \\ \\\n";System.out.print(b+"  \\ \\\n   \\/");}}

Lua, 110 bajtów

function l(n)print("__\n\\ \\\n \\ \\\n"..string.rep("__\\ \\\n\\  __\\\n \\ \\\n",n-1).."  \\ \\\n   \\/")end
ECS
źródło
1

Siatkówka , 46 bajtów

.+
__#r r$0x  r   \/
1x

1
__r\  __\# r
r
\ \#   

Traktuje dane wejściowe jako jednoargumentowe.

Każda linia powinna przejść do własnego pliku i #powinna zostać zmieniona na nową linię w plikach. Jest to niepraktyczne, ale możesz uruchomić kod w postaci pliku z -sflagą, zachowując #znaczniki. Jeśli chcesz, możesz zmienić te #znaki wyjściowe na nowe wiersze w celu zwiększenia czytelności. Na przykład:

> echo -n 11|retina -s lightning|tr # '\n'
__
\ \
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

Algorytm jest bardzo prosty. Pary linii (regex - pary zastępcze) wykonują następujące kroki podstawiania:

  • Wejście surround z górną i dolną częścią błyskawicy.
  • Odejmij 1od danych jednostkowych.
  • Zmień każdą pojedynczą cyfrę na środkową część błyskawicy.
  • Rozpakuj skompresowane \ \części pioruna, aby uzyskać pożądaną moc wyjściową.
randomra
źródło
Wypróbuj online! (obejmuje konwersję dziesiętną), ale udało mi się to zrobić w 45 bajtach: Wypróbuj online! (obejmuje konwersję dziesiętną).
Neil
1

PowerShell, 59 bajtów

'__
\ \'
,' \ \
__\ \
\  __\'*--$args[0]
' \ \
  \ \
   \/'

Skrypt testowy:

$f = {

'__
\ \'
,' \ \
__\ \
\  __\'*--$args[0]
' \ \
  \ \
   \/'

}

&$f 1
&$f 2
&$f 3
&$f 4

Wydajność:

__
\ \
 \ \
  \ \
   \/
__
\ \
 \ \
__\ \
\  __\
 \ \
  \ \
   \/
__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/
__
\ \
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
__\ \
\  __\
 \ \
  \ \
   \/

Wyjaśnienie:

Ten skrypt jest tradycyjny top+ middle+ bottom. Jest tylko jedna mądra rzecz: przecinek przed środkowym ciągiem wymusza powtórzenie elementu tablicy zamiast ciągu. Dlatego każdy middlejest wyświetlany w nowym wierszu.

mazzy
źródło