কোড গল্ফ: পিয়ানো


88

চ্যালেঞ্জ

একটি নির্দিষ্ট দৈর্ঘ্যের ইনপুট নোট থেকে শুরু করে পিয়ানো কীবোর্ডের একটি অংশকে আউটপুট করতে অক্ষর দ্বারা সংক্ষিপ্ততম কোড।

ইনপুটটি [ACDFG]#|[A-G]কীবোর্ড থেকে মুদ্রণ শুরু করার জন্য একটি নোট ( ) এবং প্রথম নোট সহ মুদ্রণের জন্য কীগুলির দৈর্ঘ্যের প্রতিনিধিত্বকারী একটি ধনাত্মক সংখ্যা দিয়ে গঠিত হবে ।

প্রথম কীটি পুরো মুদ্রিত হওয়া উচিত - এটির যদি একটি বাম ধারালো কী থাকে তবে এটি কেটে যাবে, যখন শুরু কীটি তীক্ষ্ণ হয়, বাম কীটিও কাটা হবে will

একটি শার্প কী গণনা করা হয় না, শুধুমাত্র সাদা কীগুলি।

পরীক্ষার মামলা

Input
    C 14
Output
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
    |____|____|____|____|____|____|____|____|____|____|____|____|____|____|

Input
    D# 1
Output
    ###   |
    ###   |
    ###   |
    ###   |
    ###   |
     |    |
     |    |
     |    |
    _|____|

Input
    A 7
Output
    ##  ###   |   ###  ###   |   ###  ##
    ##  ###   |   ###  ###   |   ###  ##
    ##  ###   |   ###  ###   |   ###  ##
    ##  ###   |   ###  ###   |   ###  ##
    ##  ###   |   ###  ###   |   ###  ##
    |    |    |    |    |    |    |    |
    |    |    |    |    |    |    |    |
    |    |    |    |    |    |    |    |
    |____|____|____|____|____|____|____|

কোড গণনা ইনপুট / আউটপুট (অর্থাত্ সম্পূর্ণ প্রোগ্রাম) অন্তর্ভুক্ত।


4
[A-G]#*? এর অর্থ কি আমাদের হ্যান্ডেল করা দরকার, B#####যেমন E?
আনন

4
কী গণনার জন্য, "কী" সংজ্ঞায়িত করুন। উদাহরণস্বরূপ "সি 14" 24 টি কী কী মুদ্রণ করছে?
গুফা

53
ঠিক আছে, এখন আমরা সি এবং সি # সমাধান পেয়েছি, আমাদের বি, ডি এবং এফ # দরকার।
লীরাণুনা

7
পরবর্তী কোড গল্ফ: এই পিয়ানোগুলির জন্য একটি এমআইডিআই ইন্টারফেস প্রয়োগ করুন।
এমএমএক্স

10
প্রিয় ক্লোজররা, 3 দিন পরে এই চ্যালেঞ্জটি বন্ধ করে দেওয়ার জন্য আমি আপনাকে সালাম জানাচ্ছি। আমরা এটি 5 মিনিটের মধ্যে আবার খুলতে পেলাম। এটি একাই আপনাকে কিছু বলা উচিত - আপনার পছন্দ পছন্দ হোক না কেন সম্প্রদায় এই ধরণের প্রশ্ন পছন্দ করে এবং গ্রহণ করে। আপনি যদি তা না করেন তবে দয়া করে আপনার উপেক্ষা করা ট্যাগগুলির তালিকায় কোড-গল্ফ যুক্ত করুন।
LiraNuna

উত্তর:


27

গল্ফস্ক্রিপ্ট - 80 টি অক্ষর

স্ক্রোল বার ছাড়া # এসও এর একটি লাইনে ফিট করে :)

' ':s/~~5*\(7&5*\,.4*@+):k;+):c;9,{5<'#'9**' | '4*+3/4<.1>+c*s.+*k>c<n+}%)s/'_'*

গল্ফস্ক্রিপ্ট - ৮১ অক্ষর

' ': /((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+}%) /'_'*

গল্ফস্ক্রিপ্ট - 82 টি অক্ষর

' '/((7&\,.4*@5*+:k;\~~5*+):c;9,{5<3*'###  '*' |   '4*+20<.5>+c*k)>c<n+}%)' '/'_'*

গল্ফস্ক্রিপ্ট - 85 টি অক্ষর

' '/((7&\,.4*@5*+:k;\~~5*+):c;9,{.5<3*'###  '*' _'1/@8=='|'1$3*++4*+20<.5>+c*k)>c<n}%

সুন্দরভাবে ফর্ম্যাট করা সংস্করণ (17 x 5)

' '/((7&\,.4*@5*+
:k;\~~5*+):c;9,{.
5<3*'###  '*' _'1
/@8=='|'1$3*++4*+
20<.5>+c*k)>c<n}%

গল্ফস্ক্রিপ্ট - 94 অক্ষর

' ': /~~5*:c;(7&5*:^;,:&;['###  '3*' |   '+.5>+c*1>{^4&*+>&c+)<n}:f~]5*'   _'1/{'|'\4*+7*c*f}%

গল্ফস্ক্রিপ্ট - 98 টি অক্ষর

' ': /~~5*:c;(7&5*:^;,:&;['###  '3*' |   '+.5>+c*^4&*+:^)>&c+):&<n]5*[   '_']{['|'\4*+7*c*^>&<n]}%

গল্ফস্ক্রিপ্ট - 101 অক্ষর

' ': /~~5*:c;(7&5*:^;,:&;['###  '3*' |   '+.5>+c*^4&*+)>&c+)<n]5*[   '_']{['|'\4*+7*c*^4&*+>&c+)<n]}%

গল্ফস্ক্রিপ্ট - 109 অক্ষর

' ': /~~5*:c;(7&5*:^;,:&;['##''  ###'.'   | '++.'  #'+++c*^4&*+>&c+)<n]5*[   '_']{['|'\4*+7*c*^4&*+>&c+)<n]}%

গল্ফস্ক্রিপ্ট - 120 অক্ষর

' '/~~5*:c;(7&5*:^;,:&;['##''  ###'.'   | '++.'  #'+++c*^4&*+>&c+)<n]5*['|    '7*c*^4&*+>&c+)<n]3*'|____'7*c*^4&*+>&c+)<

গল্ফস্ক্রিপ্ট - 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 
##  ###   |   ###  ###   |   ###  ##
##  ###   |   ###  ###   |   ###  ##
##  ###   |   ###  ###   |   ###  ##
##  ###   |   ###  ###   |   ###  ##
##  ###   |   ###  ###   |   ###  ##
|    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |
|____|____|____|____|____|____|____|

আমি অন্য চ্যালেঞ্জের সন্ধানে থাকেন (জন্য আমার প্রথম golfscript এন্ট্রি জমা দিতে সম্পর্কে ছিল stackoverflow.com/questions/2104556/... ), কিন্তু এটি বন্ধ পেয়েছিলাম :-(
ভিড়

4
আমি আশা করি তারা স্কুলে গল্ফস্ক্রিপ্ট শিখিয়েছিল। আমি আমার টাকা ফেরত চাই.
স্টিভ জোজো

6
ভাল লাগল আমি আমার সমাধানটি পরে পিয়ানোস্ক্রিপ্টে পোস্ট করব। এটি কেবল 6 টি অক্ষর। :-)
মল্ফ

112

পার্ল, 133 (129) অক্ষর

পার্ল, 167 160 156 147 142 133 ডি'হ! 147 144 137 134 133 অক্ষর

    $ _ = শিফট; ডাই গ্রেপ {5> $ n? y / * / # /: y / # * / | /; $ n ++ - 8 || y / / _ /}
    @ কিউ = (সাবস্ট্রাস্ট (("* # #"।। "" # # # * # | # ") X2) x9,
    4 * / # / + (7 এবং অর্ডার) * 5,1 + / # / + 5 * পপ) $ /) x9

মোল্ফের রুবির সমাধান থেকে একাধিক ধারণা ধার করে এখানে একটি 129 চর সমাধান দেওয়া হয়েছে:

    ($ _, $ সি) = @ এআরজিভি; $ জে = ($ কে = / # /) + অর্ড;
    0 n (0..8) এর জন্য {মুদ্রণ $ /, সাবস্ট্রাস্ট + (যোগ দিন '', মানচিত্র {8- $ n? 5> $ n && $ _% 7% 4? "###"
    : "|": "_ | ___"} $ জে .. $ জে + $ সি),! $ কে, -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)
          ;   '                            \   /
           | |                              | |
           /_\                              /';

7
হাহাহা, দুর্দান্ত এটা কি স্টেইনওয়ে, ইয়ামাহা, ইয়ং চাং?
স্টিভ জোজো

4
আমি "বানর" কৌতুক না পাওয়া লোকদের দেখানোর জন্য এটি বুকমার্ক করতে যাচ্ছি।
এমএমএক্স

4
@Steve - চল এটি একটি ইয়ামাহা করতে
ভিড়

6
@ মোবুড়ল, আপনি গ্রেপকে ঘৃণা করেন? তুমি কেন এটা মরে যেতে চাও? :(
LiraNuna

গল্ফস্ক্রিপ্ট * 1.3 হবে 105:
জন লা রুই

34

রুবি - 125 অক্ষর

146 144 140 137 134 126 125 অক্ষর

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,"_"}

(দ্বিতীয় নিউলাইনটি প্রয়োজনীয় নয় এবং কেবলমাত্র এসও-তে কোনও স্ক্রোলবার এড়ানোর জন্য যুক্ত করা হয় desired

রুবি 1.9 সংস্করণ ভিন্ন কিন্তু সমান দৈর্ঘ্যের (প্রতিস্থাপন a[0]দ্বারা a.ordএবং "_"দ্বারা ?_):

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

আরে ভিআইএম প্রথমটিতে 138 টি চরিত্র গণনা করে?!??
হরিখন 77

a, n = get.split; ... একই কাজ করে, -3 অক্ষর
হরিখন 77

4
আপনি এমনকি "। *" দ্বারা "গেস.স্প্লিট" প্রতিস্থাপন করতে পারেন এবং কমান্ড লাইনে ইনপুট দিতে পারেন, -8 অক্ষর
হরিখন 77

2 টি অক্ষরে পরিবর্তন i%7%4<1||t>4?"_|___":"###__"করুন i%7%4&&t<5?"###__":"_|___"এবং সংরক্ষণ করুন। আমি যে ভালবাসা %7%4বাগ্ধারা
ভিড়

4
তাই আমরা সংক্ষিপ্ততম সমাধানে নেমেছি, তাই না? রুবি রুলজ! :-D
হরিখন 77

29

লিলিপন্ড, 285 288 291 310 315 330 333 340 350 অক্ষর

মিউজিক থিমটি বজায় রেখে, লিলিপন্ড, টাইপসেট সংগীত স্কোরগুলির জন্য তৈরি করা একটি ভাষায় একটি সমাধান এখানে দেওয়া হয়েছে:

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


4
কোড গল্ফটিতে লিলিপন্ড ব্যবহার করা সম্ভবত এটিই প্রথম এবং একমাত্র সময়।
কোব্বল


26

রেট্রো গল্ফ - অ্যাপলসফট বেসিক: 236 239 245 249 257 245 267 285

পাঠযোগ্যতার জন্য একাধিক লাইনে দেখানো হয়েছে তবে একক লাইন হওয়া উচিত:

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)

জাভাস্ক্রিপ্টে এই অ্যাপলসফট বেসিক ইন্টারপ্রেটার বা একটি এমুলেটর দিয়ে পরীক্ষা করা যেতে পারে ।

পিয়ানো http://img685.imageshack.us/img685/3407/piano2.png


স্পেসিফিকেশন অনুসারে উভয় যুক্তি একই লাইনে পড়া কি সম্ভব?
কিররিনসনু

18

সি # - 315

আমি সি # তে গল্ফ চালিয়ে যাচ্ছি যদিও এটি খুব ক্ষুদ্র ভাষা নয় ...

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

23
সুরটি সম্পূর্ণ করার জন্য এখন এফ # সমাধানের জন্য।
LiraNuna

13
হাস্যরসের জন্য +1, কর্নি রৌদ্রের জন্য -1, এবং সি # এবং এফ # যেহেতু +1 সম্মতিযুক্ত।
স্টিভ তেজোয়া

এটি চালানোর চেষ্টা করার সময় আমি একটি System.IndexOutOfRangeException পেয়েছি।
ফিৎসক ইয়িটজকাকি

@ মেন্ডি: এটি চালানোর সময় আপনাকে কমান্ড লাইন যুক্তি সরবরাহ করতে হবে। আপনি যদি ভিজ্যুয়াল স্টুডিও থেকে এটি চালনা করেন তবে প্রকল্পের বৈশিষ্ট্যগুলি খুলুন, ডিবাগ ট্যাবে যান এবং স্টার্ট বিকল্পগুলির অধীনে আপনি কমান্ড লাইন আর্গুমেন্ট প্রবেশ করতে পারেন। যদি আপনি কোডটি কোনও এক্সে সংকলন করে থাকেন তবে প্রোগ্রামের নামের পরে যুক্তি দিয়ে এটি কনসোল উইন্ডো থেকে চালান।
গুফা

4
-> অপারেটরের খুব সুন্দর ব্যবহার।
কেভিন

16

পাইথন - 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]

আপনি বার বার অংশ সরিয়ে ফেলে কিছু অক্ষর সংরক্ষণ করা যায়নি tএবং uএবং 7 দ্বারা গুন?
ম্যাথু ক্রামলে

@ ম্যাথু ক্রামলে, আমার সমাধান থেকে ধার নিতে নির্দ্বিধায় :)
জন লা রুই

@gnibbler, আমি আসলে পাইথন প্রোগ্রামার নই (আমি এর সাথে কিছুটা খেলেছি, তবে ব্যাপকভাবে নয়) তাই আমি সন্দেহ করি যে এটি দিয়ে আমি আরও অনেক কিছু করতে সক্ষম হব। আমি জানি না যে অজগরটি আপনার মূল সমাধানটি না দেখলে এরকম স্ট্রিংগুলি বহুগুণ করতে পারে।
ম্যাথু ক্রামলে

@gnibbler - দুর্দান্ত সমাধান, এটি চালাতে পছন্দ করবে তবে একটি সিনট্যাক্সেরর পেতে .... সি 14 ট্রেসব্যাক (সর্বশেষতম কলটি শেষ হয়েছে): ফাইল "পিয়ানো.পি", লাইন 1, ইন? কে, এন = ইনপুট ()। বিভক্ত () ফাইল "<string>", লাইন 1 সি 14 ^
এজে।

@ এজে, দেখে মনে হচ্ছে যে ত্রুটিটি পাইথন 3 সমাধান থেকে এসেছে। আপনি কেন এটি পাচ্ছেন তা নিশ্চিত নন
জন লা রুই

15

অষ্টাভে, 153 154 155 158 159 162 172 180 186 185 188 197 199 200 206 207 209 212 214 215 219 240 244 268 অক্ষর

আপনি যখন পুরো অক্টেভের সাথে প্রোগ্রাম করতে পারবেন তখন কেন কেবল সি বা সি # বা এফ # (বা বি বা ডি) ব্যবহার করবেন?

(স্পষ্টতার জন্য প্রতি 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

হ্যাঁ ... এই সমাধানটি আসলেই একটি স্ট্রিংয়ের জটিল সংঘবদ্ধ স্থানান্তর গণনা করে comp

ব্যবহার: $ octave -q thisfile.m <input.in >output.out


13

সি - 197 203 207 216 224 232 240 চরিত্র

#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 -character সংস্করণ ধরে নেয় বাফার ওভারফ্লো ঠিক আছে।

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

4
for(j=0; j<=l*5+h; j++)<- অকেজো স্থান এবং আপনি এগুলি অক্ষর গণনায়ও অন্তর্ভুক্ত করেছেন বলে মনে হয়
নিকোলস

12

পোস্টস্ক্রিপ্ট: 239 245 293 312 (নিয়মিত); 219 224 225 231 (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


10
এই প্রতিযোগিতায় কম traditionalতিহ্যবাহী ভাষা দেখতে পছন্দ করুন Love
জনতা

12

এফ #: 224 225, 226, 248, 252, 270, 276, 299, 306 চর

let 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 এবং যেহেতু আমার শর্তসাপেক্ষে মিথ্যা বলে প্রত্যাবর্তিত শূন্যগুলি আমি মডিউলগুলির ফলাফলকে বহুগুণে বাড়িয়েছি।

<| ব্যবহার করেছেন অপারেটর একটি স্পেস চর মুণ্ডন করতে। অন্য চর সংরক্ষণ করতে অপারেটর ওভারলোডিং ব্যবহৃত হয়েছে।

আসল

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

যদি এফ # এর একটি স্ট্রিং মাল্টিপল অপারেটর থাকে
গ্রেডবট

একটি সংক্ষিপ্ত বিট:let g s i=for i=1 to i do printfn"%s"(String.replicate 99 s).[t+4*p..t+int(x.[2..])*5+5*p]
cfern

অান্তরিক ধন্যবাদ! কেন জানি না আমি জানি না। আমি এটিকে একটি ভেরিয়েবলের জন্য বরাদ্দ করেছি এবং এটি দু'বার ব্যবহার করেছি।
গ্রেডবট

এখন আমি। নেট ফাংশন নামের 48 টি চার ট্যাক্স দিচ্ছি।
গ্রেডবট

8 সংস্করণে অভিনন্দন! আমি অবাক হয়েছি আপনি কতটা ছাঁটাই করেছেন।
কেওসপ্যান্ডিয়ন

11

সেড, 231 235 234 235 237 238 244 268 269 270 276 279 280 282 287 300 307 314 329 338 অক্ষর

99 টি পর্যন্ত কীগুলির জন্য কাজ করে। স্ট্যান্ডার্ড পিয়ানোতে 52 টি সাদা কী রয়েছে, তাই এটি পর্যাপ্ত হওয়া উচিত।

s/.*/CDEFGABC&=0123456789-/
s/(.).=(.*)\1.*/&\2\2\2\2\2\2\2\2\2\2/
s/ .?(.)=(.*)\1.*-/\2/
s/.*#/%&/
:
s/((.)(.).*\2)[#-9]/\1  \3/
t
s/[^ %CF]/###/g
s/C|F/ | /g
s/(%....)?.{25}(.*)./\2/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
##  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ##
##  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ##
##  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ##
##  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ##
##  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |   ##
|    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|____|

শেষ উদাহরণটি স্ট্যান্ডার্ড কীবোর্ডের সাথে প্রান্তে কাল্পনিক কালো কীগুলি প্রিন্ট করে।


10

পিয়ানোস্ক্রিপ্ট - 2 টি অক্ষর

এটি একটি ওয়ানলাইনার:

go

ব্যবহার:

PianoScript piano.ps G# 11

আউটপুট:

###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ##
###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ##
###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ##
###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ##
###  ###   |   ###  ###   |   ###  ###  ###   |   ###  ##
 |    |    |    |    |    |    |    |    |    |    |    |
 |    |    |    |    |    |    |    |    |    |    |    |
_|____|____|____|____|____|____|____|____|____|____|____|

পিয়ানোস্ক্রিপ্ট ভাষার আরও তথ্য এখানে পাওয়া যাবে


4
এটি 0 টি অক্ষর হতে পারে, তাই না?
আপনি

আমি ধরে নিয়েছি পিয়ানোস্ক্রিপ্ট ++ আপনি প্রোগ্রামটি একটি আরও কম চরিত্রে লিখতে সক্ষম হবেন।
গ্রেডবট

4
খুব খারাপ আপনি এই ধারণাটি নিয়ে এসেছেন এমন প্রথম ব্যক্তি নন।
LiraNuna

4
প্রতারণার জন্য -1, এবং এমনকি ভাষার কোনও শীতল নাম নিয়ে আসে না;)
gnarf

4
পিয়ানোগুলির স্ক্রিপ্ট নয় স্কোর রয়েছে
জিমি

10

জাভাস্ক্রিপ্ট - 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 দ্বারা সমাধান; গিরোতে পোর্ট করা হয়েছে (একটি ছোটখাট ফিক্স এবং ফর্ম্যাটিং পরিবর্তন সহ) কিরারিনস্নো; gnarf দ্বারা আরও দূরে সরানো; ত্রুটি কিরারিনস্নো দ্বারা সংশোধন করা হয়েছে। k[1]cwallenpoole দ্বারা ক্যাশে

ব্যবহার: $ cp input.in 0; rhino thisfile.js

দ্রুত এইচটিএমএল ডেমো সংস্করণ: গল্ফ পরীক্ষা - অ্যাডসreadFile=prompt;print=function(a) {document.write("<pre>"+a);}


ঠিক আছে, আপনি স্পেসিফিকেশনটির বিরুদ্ধেও প্রতিদ্বন্দ্বিতা করেছেন ... এবং আমি মনে করি আপনি হেরে গেছেন। ;) এটি পরীক্ষার ক্ষেত্রেও পাস করে না। মনে হচ্ছে এটি একদম শুরু হয়।
গুফা

আপনার কাছে খ এর 1 টি রেফারেন্স রয়েছে। রিডফিল (খ) সবে রিডফাইলে পরিবর্তন করুন ('সাবস্ট্রিং')
পোনকাদুডেল

@ ওয়াল্লাকোলু - পরে প্রয়োজন, নীচে অংশ:s=s[b](1-q,p=s.length-3)
gnarf

6

পাইথন 3 - 158

নেভিগেশন সংরক্ষণ করুন inputবনাম raw_input। উপর হারাবেন ()জন্যprint

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

5

এফ #: 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"

@ ব্রায়ান, দয়া করে প্রয়োগ getsবা সমমানের জন্য দলটি পান , আমরা 22 টি অক্ষর বাঁচাতে পারি!
বেনজল

আমি দেখতে পাচ্ছি যে যখন গল্ফিং পুনরাবৃত্তি টাইপ টীকাগুলি সরিয়ে ফেলার একটি ভাল উপায়।
গ্রেডবট

3

এসইটিএল

165 অক্ষর; গ্রিবারার পাইথন সলিউশনটির অনুবাদ।

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;

3

ডি 2 (টেমপ্লেট): 331 370 400 + 17 টি অক্ষর

(রুবি সমাধানের উপর ভিত্তি করে))

সংকুচিত:

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>$0</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 টি পর্যন্ত কী সমর্থন করে।


4
আপনি কি ইনপুটটিকে একক স্ট্রিং তৈরি করতে পারেন? চ্যালেঞ্জের অংশটি লাইনটি একটি নোট, একটি বিকল্প option পার্সিং নিজেই কয়েকটি ভাষায় বেশ কয়েকটি অক্ষর নিতে পারে ...
কিররিনস্নু

2

হাস্কেল: 212 211 208 টি অক্ষর

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.ord এর প্রয়োজন নেই


2

রুবি - 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]}

2

পিএইচপি - 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,~õ;

উন্নত করতে হবে।

ইনপুটটি নিয়মিত পিআইএনওতে সরবরাহ করতে হবে।


1

F # 414 386 372 উল্লেখযোগ্য অক্ষর:

//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" সঠিকভাবে পরিচালনা করবে - আমি এখানে এটি আটকানোর মাধ্যমে আপনাকে বিরক্ত করব না যদিও ...

System.Console.Radadine () এমন বমর ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.