Код Гольф: Фортепиано
вызов
самый короткий код по количеству символов для вывода части фортепианной клавиатуры, начиная с входной ноты в заданной длине.
вход будет состоять из записки ([ACDFG]#|[A-G]
) для начала печати клавиатуры и положительное число, представляющее длину клавиш для печати, включая первую ноту.
первый ключ должен быть напечатан полностью - если он имеет левый острый ключ, то он будет отрезан, такой же для Когда ключ начала остр, левый ключ будет сокращен, а также.
острый ключ не считается, только белые клавиши.
тесты
Input
C 14
Output
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| ### ### | ### ### ### | ### ### | ### ### ### |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
|____|____|____|____|____|____|____|____|____|____|____|____|____|____|
Input
D# 1
Output
### |
### |
### |
### |
### |
| |
| |
| |
_|____|
Input
A 7
Output
## ### | ### ### | ### ##
## ### | ### ### | ### ##
## ### | ### ### | ### ##
## ### | ### ### | ### ##
## ### | ### ### | ### ##
| | | | | | | |
| | | | | | | |
| | | | | | | |
|____|____|____|____|____|____|____|
отсчет кода включает вход-выход (т. е. полную программу).
22 ответа:
GolfScript - 80 Символов
помещается в одну строку #SO без полосы прокрутки:)
' ':s/~~5*\(7&5*\,.4*@+):k;+):c;9,{5<'#'9**' | '4*+3/4<.1>+c*s.+*k>c<n+}%)s/'_'*
GolfScript - 81 Символов
' ': /((7&\,.4*@5*+:k;\~~5*+):c;9,{5<'#'9**' | '4*+3/4<.1>+c* +*k)>c<n+}%) /'_'*
красиво отформатированная версия (27 x 3)
' ': /((7&\,.4*@5*+:k;\~~5* +):c;9,{5<'#'9**' | '4*+3/4 <.1>+9* +*k)>c<n+}%) /'_'*
GolfScript - 82 Символов
' '/((7&\,.4*@5*+:k;\~~5*+):c;9,{5<3*'### '*' | '4*+20<.5>+c*k)>c<n+}%)' '/'_'*
GolfScript - 85 Символов
' '/((7&\,.4*@5*+:k;\~~5*+):c;9,{.5<3*'### '*' _'1/@8=='|'1*++4*+20<.5>+c*k)>c<n}%
красиво отформатированная версия (17 x 5)
' '/((7&\,.4*@5*+ :k;\~~5*+):c;9,{. 5<3*'### '*' _'1 /@8=='|'1*++4*+ 20<.5>+c*k)>c<n}%
GolfScript - 94 Символов
' ': /~~5*:c;(7&5*:^;,:&;['### '3*' | '+.5>+c*1>{^4&*+>&c+)<n}:f~]5*' _'1/{'|'*+7*c*f}%
GolfScript - 98 Символов
' ': /~~5*:c;(7&5*:^;,:&;['### '3*' | '+.5>+c*^4&*+:^)>&c+):&<n]5*[ '_']{['|'*+7*c*^>&<n]}%
GolfScript - 101 Символов
' ': /~~5*:c;(7&5*:^;,:&;['### '3*' | '+.5>+c*^4&*+)>&c+)<n]5*[ '_']{['|'*+7*c*^4&*+>&c+)<n]}%
GolfScript - 109 Символов
' ': /~~5*:c;(7&5*:^;,:&;['##'' ###'.' | '++.' #'+++c*^4&*+>&c+)<n]5*[ '_']{['|'*+7*c*^4&*+>&c+)<n]}%
GolfScript - 120 Символов
' '/~~5*:c;(7&5*:^;,:&;['##'' ###'.' | '++.' #'+++c*^4&*+>&c+)<n]5*['| '7*c*^4&*+>&c+)<n]3*'|____'7*c*^4&*+>&c+)<
GolfScript - 127 Символов
' '/~~5*:c;(7&5*:^;,:&;['## ### ### | ### ### | #'c*^4&*+>&c+)<n]5*['| '7*c*^4&*+>&c+)<n]3*'|____'7*c*^4&*+>&c+)< $ echo -n C 14 | ruby golfscript.rb piano.gs | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |____|____|____|____|____|____|____|____|____|____|____|____|____|____| $ echo -n D# 1| ruby golfscript.rb piano.gs ### | ### | ### | ### | ### | | | | | | | _|____| $ echo -n A 7| ruby golfscript.rb piano.gs ## ### | ### ### | ### ## ## ### | ### ### | ### ## ## ### | ### ### | ### ## ## ### | ### ### | ### ## ## ### | ### ### | ### ## | | | | | | | | | | | | | | | | | | | | | | | | |____|____|____|____|____|____|____|
Perl, 133 (129) chars
Perl,
167160156147142133ох!147144134133 символов$_=shift;die grep{5>$n?y/*/#/:y/#*/ |/;$n++-8||y/ /_/} @Q=(substr(("*# #".("*# #*# | #")x2)x9, 4*/#/+(7&ord)*5,1+/#/+5*pop).$/)x9вот 129 char решение, заимствуя несколько идей из рубинового решения мольфа:
($_,$c)=@ARGV;$j=($k=/#/)+ord; for$n(0..8){print$/,substr+(join'',map{8-$n?5>$n&&$_%7%4?"### " :" | ":"_|___"}$j..$j+$c),!$k,-3}и с помощью Acme:: AsciiArtinator:
sub init_piano{$S=$";$H='#'; ( $ T ,$P,$U)=qw( T | _ | / ) ; $ d =$T.$H.$S.$S;$t = $ d . $H . $ d . $ S .$P.$S.$S.$S.$H;$ t= $ d.$H.$t.$t;};$_=shift;-/-/;&init_piano();$Z=/#/;-/| | | | | | YAMAHA | / ;die grep{4>$n++?y/T/#/:y/#T/ |/;$n-8||y/ /_/;}@q=(m{ // // /// // /// // /// // /// // /// // /// // /// / // // /// // /// // /// // /// // /// // /// // /// / } . substr(${t}x(9),4*${Z}+(7&ord)*5,1+$Z+5*pop).$/)x(8) ; ' \ / | | | | /_\ /';
Рубин - 125 символов
146144140134126125 символовa,n=$*;h=a[1]?0:1;s=a[0]-h+1 9.times{|t|puts (s..s+n.to_i).map{|i|i%7%4<1||t>4?" | ":"### " }.join[h..-4].tr t>7?" ":n,"_"}
(вторая новая строка не нужна и добавлена только для того, чтобы избежать полосы прокрутки на SO. При желании точки с запятой можно заменить на новые строки.)
The Руби 1.9 версия отличается, но одинаковой длины (замена
a[0]
bya.ord
и"_"
by?_
):a,n=$*;h=a[1]?0:1;s=a.ord-h+1 9.times{|t|puts (s..s+n.to_i).map{|i|i%7%4<1||t>4?" | ":"### " }.join[h..-4].tr t>7?" ":n,?_}
вызов с
$ ruby piano.rb C 14
LilyPond, 285
288291310315330333340350символыв соответствии с музыкальной темой, вот решение на языке, предназначенном для набора музыкальных партитур, LilyPond:
x=#ly:string-substitute u=#(x"*""### ""| *** | ** ")t=#(x"###"" | "u)q=#read-char z=#(q)v=#(if(eq?(q)#\#)1 0)y=#(iota(+(*(read)5)1 v))#(format #t"~{~{~a~} ~}"(map(lambda(s)(map(lambda(i)(string-ref s(modulo(+(*(char->integer z)5)i(* v 4))35)))y))(list u u u u u t t t(x" ""_"t))))
использование:
$ lilypond thisfile.ly <input.in >output.out 2>/dev/null
RetroGolf-Applesoft BASIC: 236
239245249257245267285показано в нескольких строках для удобства чтения, но должно быть одной строкой:
1K$="## | ### #":K$="## #"+K$+K$: FORI=1TO21:F$=F$+"|____":L$=L$+"| ":NEXT: INPUTN$:S=MID$(N$,2,1)="#":O=(ASC(N$)-65)*5+1+S*4:L=VAL(RIGHT$(N$,2))*5+1+S: FORI=1TO5:?MID$(K$+K$+K$,O,L):NEXT:FORI=1TO3:?MID$(L$,O,L):NEXT:?MID$(F$,O,L)
можно проверить с этим Applesoft BASIC Interpreter в Javascript или эмулятор.
фортепиано http://img685.imageshack.us/img685/3407/piano2.png
C# - 315
Я продолжаю играть в гольф на C#, хотя это не очень краткий язык...
using C=System.Console;class P{static void L(int o,int c,string s){while(c-->0)C.Write(s[(420>>o++%5*2&3)+(91>>(o+2)/5%7&1)*3]);C.WriteLine();}static void Main(string[]a){int i=0,s=a[0].Length-1,c=int.Parse(a[1])*5+1+s,o=(a[0][0]-65+s)*5-s;while(i++<5)L(o,c,"| ## ");while(i++<8)L(o,c,"| | ");L(o,c,"|__|__");}}
Python-164
k,n=raw_input().split() m=k[1:]>"" n=int(n)*5+1 o=(ord(k[0])-65)*5+4*m for x in["## ### | ### "]*5+[n*"| "]*3+[n*"|____"]:print((x+x[::-1][:-1])*n)[o:o+n+m]
Октавы, 153
154155158159162172180186185188197199200206207209212214215219240244268персонажизачем использовать только C или C# или F# (или B или D), Когда вы можете программировать с полной Октавой?
(обернутый каждые 60 символов для ясности)
x=5*scanf("%2c%d");for k=-8:0disp((s={[t="| ### ### ","# ## ",t" "]"| ","|____"}{(k>-4)+!k+1})(1+mod(5*(y=x(2)>1 60)+(-y:x(3))+x(1),rows(s'))))end
да ... это решение действительно вычисляет комплексную сопряженную транспозицию строки.
использование:
$ octave -q thisfile.m <input.in >output.out
C-197
203207216224232240символы#define S"# | ### ### ##" main(i,j,l,h,t){char*X[]={"____|"," |",S S,S S},s[i=11];for(scanf("%s%n%d",s,&h,&l);--i>1;puts(""))for(j=t=*s%7*5+h*4;j<t+l*5+h;putchar(X[i/3][j++%(i>5?35:5)]));}
это эквивалентно 194-символьная версия предполагает, что переполнение буфера нормально.
#define S"# | ### ### ##" i=11;main(j,l,h,t){char*X[]={"____|"," |",S S,S S},s;for(scanf("%s%n%d",&s,&h,&l);--i>1;puts(""))for(j=t=s%7*5+h*4;j<t+l*5+h;putchar(X[i/3][j++%(i>5?35:5)]));}
Постскриптум: 239
245293312(регулярный); 219224225231(ASCII85)/r{(%stdin)(r)file token pop}def[(]){mul add}/z r(:-)cvs dup length 1 sub/v exch/p r/s(| ### ### ### | ### ### )([){0 1 v p 5]{s exch z 0 get 5]v 4]s length mod 1 getinterval print}for/ =}>>begin[[[[[/s(| )def[[[/s(|____)def[
двоичная версия расширена через кодировку ASCII85 в 219-символьную программу только с печатными символами ASCII:
/(|____)/(| )[/r/(| ### ### ### | ### ### )<~Ou%G5-$+0=Bl5@JE[d/;P,jagI?HCK@<*JGP,4<rOuSV60p8LhG*5%O8oc=a.=3b)!HsVu23Md=!IHJ_A<K->@5*j;23Md=!HoSBP&-9^09Tk/@ZkI\P"_$^I?I,S+?b-:5*?@Z>?b<9Ou$<H>EUc~>cvx exec[
использование:
$ gs -q -dNOPROMPT -dNODISPLAY -dBATCH thisfile.ps <input.in >output.out
F#: 224
225, 226, 248, 252, 270, 276, 299, 306Charslet x,(/)=System.Console.ReadLine(),String.replicate let t,p=(int x.[0]-60)%7*5,int x.[1]%2 let g s i=printf"%s"(i/((99/s).[t+4*p..t+int x.[2..]*5+5*p]+"\n")) g"| ### ### | ### ### ### "5 g"| "3 g"|____"1
я использовал модули 2 для обнаружения для пространства или фунта. составляет 32 % 2 = 0 '#'- это 35 % 2 = 1 и поскольку мои условные возвращенные нули для false я просто умножил результат модулей.
использовал оператор, чтобы сбрить один символ пробела. Используется перегрузка оператора для сохранения другого символа.
оригинал
let piano_long (input:string) = let sharp, flat = if input.[1] = '#' then 4, 1 else 0, 0 let note = (int input.[0] - 60) % 7 let num = int (input.Substring 2) let start = note * 5 + sharp let stop = num * 5 + 1 + flat let top = "| ### ### | ### ### ### | ### ### | ### ### ### |" let middle = "| | | | | | | | | | | | | | |" let bottom = "|____|____|____|____|____|____|____|____|____|____|____|____|____|____|" let mutable piano = "" for i in 1..5 do piano <- piano + top.Substring(start, stop) + "\n" for i in 1..3 do piano <- piano + middle.Substring(start, stop) + "\n" piano <- piano + bottom.Substring(start, stop) printf "%s\n\n" piano
sed, 231
235234235237238244268269270276279280282287300307314329338символыработает до 99 ключей. Стандартное пианино имеет 52 белые клавиши, так что этого должно быть достаточно.
s/.*/CDEFGABC&=0123456789-/ s/(.).=(.*).*/&/ s/ .?(.)=(.*).*-// s/.*#/%&/ : s/((.)(.).*)[#-9]/ / t s/[^ %CF]/###/g s/C|F/ | /g s/(%....)?.{25}(.*).//p p p p p s/## /| /g s/#[|#]/ |/g p p p y/ /_/
примеры:
$ echo C 14 | sed -rf piano.sed | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | ### ### | ### ### ### | ### ### | ### ### ### | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |____|____|____|____|____|____|____|____|____|____|____|____|____|____| $ echo D# 1 | sed -rf piano.sed ### | ### | ### | ### | ### | | | | | | | _|____| $ echo A 7 | sed -rf piano.sed ## ### | ### ### | ### ## ## ### | ### ### | ### ## ## ### | ### ### | ### ## ## ### | ### ### | ### ## ## ### | ### ### | ### ## | | | | | | | | | | | | | | | | | | | | | | | | |____|____|____|____|____|____|____| $ echo A 52 | sed -rf piano.sed ## ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ## ## ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ## ## ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ## ## ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ## ## ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ### ### | ### ### ### | ## | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|
в последнем примере печатается стандартная клавиатура вместе с воображаемыми черными клавишами на обоих концах.
PianoScript - 2 символа
Это один-лайнер:
go
использование:
PianoScript piano.ps G# 11
выход:
### ### | ### ### | ### ### ### | ### ## ### ### | ### ### | ### ### ### | ### ## ### ### | ### ### | ### ### ### | ### ## ### ### | ### ### | ### ### ### | ### ## ### ### | ### ### | ### ### ### | ### ## | | | | | | | | | | | | | | | | | | | | | | | | _|____|____|____|____|____|____|____|____|____|____|____|
дополнительную информацию о языке PianoScript можно найти здесь.
JavaScript-195 символов
Эй, гольф-это игра, в которой вы соревнуетесь только с самим собой, верно? :)
k=readFile(0).split(' ') q=!k[0][1] r=k[1] o='' for(x=10;x--;){p=k[0].charCodeAt(0)-65+!q s='' for(j=+r+1;j--;){p=++p%7 s+=x>4&&!p|p%3?'### ':x?' | ':'_|___'}o+=s.substring(q,r*5+2)+'\n'}print(o)
решение от gnarf; портировано на Rhino (с незначительными исправлениями и изменениями форматирования) KirarinSnow; далее откалывается gnarf; ошибка исправлена KirarinSnow. кэш
k[1]
by cwallenpooleиспользование:
$ cp input.in 0; rhino thisfile.js
быстрая демо-версия HTML: Гольф-Тест - Добавляет
readFile=prompt;print=function(a) {document.write("<pre>"+a);}
Python3-158
сохранить на
input
vsraw_input
. Проиграть на()
наk,n=input().split() o=(ord(k[0])-65)*5 n=int(n)*5+1 for x in["## ### | ### "]*5+[n*"| "]*3+[n*"|____"]:print(((x+x[::-1][:-1])*n)[o+3*len(k[1:]):o+n])
В F#: 355 значимых символов
все на одной линии:
let[|x;y|]=System.Console.ReadLine().Split([|' '|])in[for i in 1..9->let r (a:string) b j (s:string)=s.Replace(a,if i>j then b else a)in((String.replicate(int y+1)"23012123012121").Substring(int(x.[0])-65,int y*2+x.Length).Replace("0","| ")|>r"1""#"0|>r"2""## "0|>r"3"" "0).TrimEnd()|>r"###"" | "5|>r"##""| "5|>r" ""_"8]|>String.concat"\n"|>printfn "%s"
расширенный:
let piano() = let[|x;y|]=System.Console.ReadLine().Split([|' '|])in [for i in 1..9-> let r (a:string) b j (s:string) = s.Replace(a,if i>j then b else a) in ((String.replicate (int y+1) "23012123012121") .Substring(int(x.[0])-65,int y*2+x.Length).Replace("0","| ") |> r "1" "#" 0 |> r "2" "## " 0 |> r "3" " " 0) .TrimEnd()|> r "###" " | " 5|> r "##" "| " 5|> r " " "_" 8] |> String.concat "\n" |> printfn "%s"
SETL
165 символов; перевод решения gribblers Python.
get(l);[k,n]:=split(l);o:=(abs k(1)-65)*5;n:=1+5*val n;(for x in['## ### | ### ']*5+[n*'| ']*3+[n*'|____'])print(((x+reverse x(2..))*n)(o+4*#k-3..o+n));end;
D2 (шаблоны): 331
370400+ 17 символов(на основе решения Ruby.)
сжатый:
template J(alias T,int b,int e,r...){static if(e)enum J=T!(b,r)~J!(T,b+1,e-1,r);else enum J="";}template K(int i,int t){enum K=t>7?"_|___":t<5&&3&i%7?"### ":" | ";}template R(int t,int s,int l,int h){enum R=J!(K,s-h,l,t)[h..$-3]~"\n";}template M(alias k){enum M=J!(R,0,9,k[0]+1,k[$-2]>32?k[$-1]+10*k[$-2]-527:k[$-1]-47,k[0]&1);}
пояснил:
/** Macros: D = <tt></tt> */ ; /** $(D_PSYMBOL J) (short for "join") will evaluate $(D T!(i,r)) for $(D_PARAM i) in $(D [b..b+e]). Then, these compile-time strings will be concatenated. */ template J(alias T,int b,int e,r...){ static if(e) enum J=T!(b,r)~J!(T,b+1,e-1,r); else enum J=""; } /** $(D_PSYMBOL K) (short for "key") will generate 5 characters as a row of key $(D_PARAM i) at row $(D_PARAM t). */ template K(int i,int t){ enum K=t>7?"_|___":t<5&&3&i%7?"### ":" | "; } /** $(D_PSYMBOL R) (short for "row") will generate the keyboard at row $(D_PARAM t), from key $(D_PARAM s) and sharpness $(D_PARAM h) with a length of $(D_PARAM l) keys. */ template R(int t,int s,int l,int h){ enum R=J!(K,s-h,l,t)[h..$-3]~"\n"; } /** $(D_PSYMBOL M) (short for "main") results in the whole keyboard as a string. Example: ----- pragma(msg,M!("C 14")); pragma(msg,M!("D# 1")); pragma(msg,M!("A 7")); ----- */ template M(alias k){ enum M=J!(R,0,9,k[0]+1,k[$-2]>32?k[$-1]+10*k[$-2]-527:k[$-1]-47,k[0]&1); }
так как мы не можем передать параметры из
dmd
ввод должен быть выполнен в коде. Поддерживает только до 99 ключей.
Haskell:
212211208 символовa=" | " b=" ### " d=concat.cycle e=d[b,b,a,b,b,a,b] f=d[a] t x s m n=map(take(5*read s+m).drop(5*length['@'..x]-n))[e,e,e,e,e,f,f,f,d["__|__"]] u(x:'#':s)=t x s 2 4 u(x:s)=t x s 1 8 main=interact$unlines.u
Он по-прежнему предполагает ascii-совместимые Буквы (в частности, последовательность "@ABCDEFG"), но больше не требует Char.орд
Рубин - 113 символов
работает с аргументами командной строки
$ ruby piano.rb A 7 k,c=$* 9.times{|x|puts (((b=x<8?' | ':'__|__')+(a=x<5?' ### ':b)*3+b+a*2)*j=k[0]*5-2+4*s=k.size)[j,c.to_i*5+s]}
Рубин - 118 симв.
k,c=$* 9.times{|x|puts (((b=x<8?' | ':'__|__')+(a=x<5?' ### ':b)*3+b+a*2)*j=2+k[0]*5+4*s=k.size-1)[j..c.to_i*5+s+j]}
PHP-208 символов
<?$e=45*substr($a=PIANO,2+$d=!($a[1]^~ì))+9+$d*45;$j=9*$c=4*$d;for($b=ord($a[0])-65,--$c;$j<$e;$f[$i=$j++%9].=($c=($c+!$i)%5)%4<2&$i>3&$b%3!=2?Ü:($c?$i?ß: :))$j%45-36?:$b=++$b%7;for(;$a=$f[$i--];)echo~$a,~õ;
должны быть улучшены.
вход должен быть доставлен в константу с именем PIANO.
F#
414386372 значащих символов://wins me 2 characters open System //String.replicate, didn't know this existed before reading Juliet let r=String.replicate //print s n times, each time on a newline let P n s=printf"%s"(r n (s+"\n")) //define top rows let t="## ### | ### ### | ### #" //middle and bottom rows can be defined using 'r' let m,b=r 7"| ",r 7"|____" //pick of chars from O to n+O from string, wrap round if we go beyond s.Length let L(s:string)O n=String([|5*O..5*(n+O)|]|>Array.map(fun i->s.[i%35])) //match input string into two halves let[|k;n|]=Console.ReadLine().Split([|' '|]) //work out start pos and length (in chars, not keys) let O,N= let K=int k.[0]-65 //'A'=65, this is why t starts at A if k.[0]='#'then(K+3,int n+2)else(K,int n) //Print 5 top rows, 3 middle rows and the bottom row P 5(L t O N) P 3(L m O N) P 1(L b O N)
О, и один бонус, этот скрипт будет на самом деле обрабатывать "F# 372" правильно - я не буду раздражать вас, вставляя его здесь...