গিটার ট্যাব তৈরি হচ্ছে?


24

সংক্ষিপ্ততম প্রোগ্রামটি লিখুন যা ইনপুট হিসাবে দেওয়া chords জন্য গিটার ট্যাব উত্পন্ন করে।

সুতরাং তোমাদের মধ্যে গিটার একটি সুবিধা আছে না যে, এবং এটি নিয়ন্ত্রণবাদী (এবং সম্ভবত কোডে সহজ) করতে, এখানে আছেন শুধুমাত্র কর্ডগুলি ফরম অনুমোদিত:

Major chords:

  E   F   F#  G   G#  A   A#  B   C   C#  D   D#
e 0---1---2---3---4---0---1---2---3---4---5---6---
B 0---1---2---3---4---2---3---4---5---6---7---8---
G 1---2---3---4---5---2---3---4---5---6---7---8---
D 2---3---4---5---6---2---3---4---5---6---7---8---
A 2---3---4---5---6---0---1---2---3---4---5---6---
E 0---1---2---3---4---0---1---2---3---4---5---6---

Minor chords:

  Em  Fm  F#m Gm  G#m Am  A#m Bm  Cm  C#m Dm  D#m
e 0---1---2---3---4---0---1---2---3---4---5---6---
B 0---1---2---3---4---1---2---3---4---5---6---7---
G 0---1---2---3---4---2---3---4---5---6---7---8---
D 2---3---4---5---6---2---3---4---5---6---7---8---
A 2---3---4---5---6---0---1---2---3---4---5---6---
E 0---1---2---3---4---0---1---2---3---4---5---6---

মনে রাখবেন যে প্রতিটি সিরিজের 5 প্রথম chords এবং 7 টি সর্বশেষ স্বর্ণের বিভিন্ন রূপ রয়েছে।

সমস্ত chords সহজ প্রধান বা গৌণ chords (কোন 7 ম বা অন্যান্য প্রকরণ নয়)।

আপনার ফ্ল্যাটেরও যত্ন নেওয়া উচিত। অনুস্মারক:

A# = Bb
C# = Db
D# = Eb
F# = Gb
G# = Ab

B#, Cb, E# and Fb are not used

আউটপুট অবশ্যই কর্ডের নাম সহ প্রথম কলামটি অন্তর্ভুক্ত করতে হবে , যেমন উপরে বর্ণিত। এটি উপরে জ্যাড নাম অন্তর্ভুক্ত করতে হবে না-উপরে যেমন দেখানো হয়েছে তেমনিভাবে ছেড়াগুলি অবশ্যই 3 দ্বারা পৃথক করা উচিত । চূড়ান্ত 3 -.চ্ছিক।

ইনপুটটি একটি স্ট্রিং যা জ্যাজের নামগুলি নিয়ে গঠিত হয় যা স্পেস দ্বারা পৃথক করা হয়।

একটি উদাহরণ ইনপুট হয়:

Bm Gb A E G D Em F#

এবং সম্পর্কিত আউটপুট হয়:

e 2---2---0---0---3---5---0---2---
B 3---2---2---0---3---7---0---2---
G 4---3---2---1---4---7---0---3---
D 4---4---2---2---5---7---2---4---
A 2---4---0---2---5---5---2---4---
E 2---2---0---0---3---5---0---2---

... এবং পার্শ্ব প্রশ্ন: উদাহরণের গানটি কী? :)
জুলুস ওলান

5
হোটেল ক্যালিফোর্নিয়া: পি
ম্যাথিউ 21

হ্যাঁ, আপনি জয়! :)
জুলস ওলান

দুর্দান্ত ধারণা। ইচ্ছে করে আমি খেলার সময় পেতাম!
ইগবি লার্জম্যান

উত্তর:


9

জাভাস্ক্রিপ্ট, 297 277 262 235 223 অক্ষর

গল্ফযুক্ত সংস্করণে কোনও গাড়ীর রিটার্ন উল্লেখযোগ্য নয়; তারা কেবল উত্তরটি পাঠযোগ্য। সেমিকোলনগুলি তাৎপর্যপূর্ণ।

সম্পাদনা করুন:map কিছুক্ষণ লুপ এবং অন্যান্য সম্পাদনা দিয়ে বহিঃস্থ প্রতিস্থাপন করা হয়েছে । শেষ পর্যন্ত 2 inside এর ভিতরে গল্ফস্ক্রিপ্ট সংস্করণটির আকার (এখন জন্য)!

সম্পাদনা:indexOf গণিত দিয়ে প্রতিস্থাপন, লুকিং টেবিল, অন্যান্য ছোট ছোট উন্নতি ভেঙে দিয়েছে।

সম্পাদনা: আরেকটি mapথেকে forএবং একটি চূড়ান্ত রাখা \nআমি অকারণে খাওয়া হয়েছে। অবশেষে জুলসের পাইথন সংস্করণের ভিতরে।

i=prompt(o='').split(' ');for(r=6;o+=' EADGBe'[r]+' ',r--;o+='\n')
for(j=0;n=i[j++];o+=(([84,13,52,5][2*/m/.test(n)+x]*8>>2*r&3)+y-7*x)+'---')
y=n.charCodeAt(0),y=(2*y-(y>66)-(y>69)+(n[1]<'$')-(n[1]=='b')+2)%12,x=y>6;alert(o)

আউটপুট আর theচ্ছিক ---হিসাবে অনুসরণ করার সুবিধা গ্রহণ করে না :

e 2---2---0---0---3---5---0---2---
B 3---2---2---0---3---7---0---2---
G 4---3---2---1---4---7---0---3---
D 4---4---2---2---5---7---2---4---
A 2---4---0---2---5---5---2---4---
E 2---2---0---0---3---5---0---2---

জঘন্য, আমি মনে করি জাভাস্ক্রিপ্টের পীন-enর্ষা পেয়েছি। সুন্দরভাবে সম্পন্ন.
কেকেকেল

7

গল্ফস্ক্রিপ্ট, 136 অক্ষর

[["eBGDAE"{[]+" "+}/]]\" "/{.-2\{"bm#A B C D E F G"?.)!!*(+}/14%.3>-.8>-.7/@109?0>2*+[963 780 882 753]{3base(;}%=\7%{+'---'+}+%}%+zip n*

প্রতিটি আউটপুট সারির শুরুতে সম্পূর্ণ 23 টি অক্ষর (17.5%) এই দুটি অক্ষরের সাথে ডিল করে।

নমুনা আউটপুট, প্রান্তের মামলাগুলি পরীক্ষা করে:

$ golfscript.rb tabs.gs <<<"E G# Ab A Db D# Em G#m Abm Am D#m"
e 0---4---4---0---4---6---0---4---4---0---5---
B 0---4---4---2---6---8---0---4---4---1---6---
G 1---5---5---2---6---8---0---4---4---2---7---
D 2---6---6---2---6---8---2---6---6---2---7---
A 2---6---6---0---4---6---2---6---6---0---5---
E 0---4---4---0---4---6---0---4---4---0---5---

আমি এটিতে প্রায় এক ঘন্টা ব্যয় করেছি, তাই এটি সম্ভবত কমপক্ষে 5 থেকে 10 অক্ষর দ্বারা হ্রাস করা যেতে পারে। ধারণাগতভাবে এটি ডকম্যাক্সের সমাধানের সাথে বেশ সমান হতে পারে: চারটি ক্ষেত্রে অনুসন্ধান সারণী, তারপরে অফসেটের মাধ্যমে বর্ধন এবং ডান ক্রমে স্ট্রিংগুলিতে যোগদান করুন।


+1: মানুষ আমি গল্ফস্ক্রিপ্ট পছন্দ! আজ বেশ কয়েকবার আমার কোডটি ছাঁটাই করার জন্য জায়গা খুঁজে পেয়েছি, তবে 50% দিয়ে নয়! আমার কাছে কোনও দোভাষী নেই:
ডকম্যাক্স

বিটিডাব্লু, আপনার নমুনার শেষ নোটটি সি # মি এর সাথে মেলে যদিও কমান্ড লাইনটি ডি # মি দেখায়। টাইপো বা বাগ?
ডকম্যাক্স

@ ডকম্যাক্স, বাগ আমি বুঝতে পারছি না কেন এটি কেবল ডি # মি এবং ডি # কে প্রভাবিত করে না - এটি ডিবাগ করার জন্য আকর্ষণীয় হতে চলেছে। আমি জিনিসগুলিকে পুনঃক্রম করতে থাকি কারণ of টি ব্লকটি প্রথমে রাখা সুবিধাজনক, তাই এব আসলেই কোনও প্রান্তের মামলা নয়।
পিটার টেলর

দেখা যাচ্ছে যে সর্বশেষটি একটি included n অন্তর্ভুক্ত করছে, যা অনুসন্ধান সারণীতে না থাকায় একটি অক্ষরের সমতুল্য হয়ে মানটি টানছিল।
পিটার টেলর

4

এটিকে কোড করার পরে, আমি বুঝতে পেরেছিলাম যে আমি এটি আরও চৌকস করতে পারতাম ... সম্ভবত আমি অন্য এন্ট্রি করব। আশা করি আমি দ্রুত হওয়ার জন্য পয়েন্টগুলি পেয়ে যাব!

যাইহোক, পার্লের 962 টি অক্ষর রয়েছে।

%c =(B=>{E=>0,F=>1,Gb=>2,G=>3,Ab=>4,A=>2,Bb=>3,B=>4,C=>5,Db=>6,D=>7,Eb=>8,Em=>0,Fm=>1,Gbm=>2,Gm=>3,Abm=>0,Am=>1,Bbm=>2,Bm=>3,Cm=>4,Dbm=>5,Dm=>6,Ebm=>7},G=>{E=>1,F=>2,Gb=>3,G=>4,Ab=>5,A=>2,Bb=>3,B=>4,C=>5,Db=>6,D=>7,Eb=>8,Em=>0,Fm=>1,Gbm=>2,Gm=>3,Abm=>4,Am=>2,Bbm=>3,Bm=>4,Cm=>5,Dbm=>6,Dm=>7,Ebm=>8},D=>{E=>2,F=>3,Gb=>4,G=>5,Ab=>6,A=>2,Bb=>3,B=>4,C=>5,Db=>6,D=>7,Eb=>8,Em=>2,Fm=>3,Gbm=>4,Gm=>5,Abm=>6,Am=>2,Bbm=>3,Bm=>4,Cm=>5,Dbm=>6,Dm=>7,Ebm=>8},A=>{E=>2,F=>3,Gb=>4,G=>5,Ab=>6,A=>0,Bb=>1,B=>2,C=>3,Db=>4,D=>5,Eb=>6,Em=>2,Fm=>3,Gbm=>4,Gm=>5,Abm=>6,Am=>0,Bbm=>1,Bm=>2,Cm=>3,Dbm=>4,Dm=>5,Ebm=>6},E=>{E=>0,F=>1,Gb=>2,G=>3,Ab=>4,A=>0,Bb=>1,B=>2,C=>3,Db=>4,D=>5,Eb=>6,Em=>0,Fm=>1,Gbm=>2,Gm=>3,Abm=>4,Am=>0,Bbm=>1,Bm=>2,Cm=>3,Dbm=>4,Dm=>5,Ebm=>6});
%b=('A#'=>'Bb','C#'=>'Db','D#'=>'Eb','F#'=>'Gb','G#'=>'Ab');
foreach(qw(e B G D A E)){p($_,@ARGV)}
sub p{$s = shift;print "$s ";$s = uc($s);foreach(@_){while(($h,$f)=each(%b)){s/$h/$f/}print "$c{$s}->{$_}---"}print "\n"}

এখানে সম্পর্কিত আউটপুট।

dhrasmus:Desktop standage$ perl guitar Bm Gb A E G D Em F#
e 2---2---0---0---3---5---0---2---
B 3---2---2---0---3---7---0---2---
G 4---3---2---1---4---7---0---3---
D 4---4---2---2---5---7---2---4---
A 2---4---0---2---5---5---2---4---
E 2---2---0---0---3---5---0---2---

4

যেহেতু সংক্ষিপ্ততর সমাধান ইতিমধ্যে দেওয়া হয়েছে (অভিশাপ আপনি গল্ফসক্রিপ্ট!), এখানে আমার:

পাইথন, 229 অক্ষর

s=[("E EmF FmF#GbG GmG#AbA AmA#BbB BmC CmC#DbD DmD#Eb".find("%-02s"%s[:2])/4,s[-1]!='m')for s in raw_input().split()]
for c in range(6):
 l='eBGDAE'[c]+' '
 for(i,M)in s:x=i>4;l+=`i-5*x+2*(2<c+x<5)+(M+x)*(c==2-x)`+"---"
 print l

আউটপুট:

> echo "Bm Gb A E G D Em F#" | python guitar.py
e 2---2---0---0---3---5---0---2---
B 3---2---2---0---3---7---0---2---
G 4---3---2---1---4---7---0---3---
D 4---4---2---2---5---7---2---4---
A 2---4---0---2---5---5---2---4---
E 2---2---0---0---3---5---0---2---

3

পাইথন, 449 অক্ষর

z=int
f=str
r=range
j=''.join
n='E F F# G G# A A# B C C# D D#'.split()
n+=[x+'m'for x in n]
c=[j([f(z(x)+i)for x in'001220'])for i in r(5)]+[j([f(z(x)+i)for x in'022200'])for i in r(7)]
c+=[x[:2]+f(z(x[2])-1)+x[3:]for x in c[:5]]+[x[0]+f(z(x[1])-1)+x[2:]for x in c[5:]]
a=[c[n.index((chr(ord(i[0])-1)+'#'+i[2:]).replace('@','G')if len(i)-1 and i[1]=='b'else i)]for i in raw_input().split()] 
for i in r(6):print'eBGDAE'[i],j([x[i]+'-'*3 for x in a])

3

C99 - 231 টি অক্ষর

কর্ডসটি কমান্ড লাইনে দেওয়া হয়, এক জেল প্রতি আর্গুমেন্ট এবং অবশ্যই কোনও ধরণের কোনও ইনপুট বৈধতা নেই।

#include<stdio.h>
int main(int c,char**v){for(char*o="e0)B2)G2*D2+A0+E0)",i,m;*o;o+=3,v-=c,puts(""))for(printf("%c ",*o);*++v;printf("%c---",i-(i>2)-i/9+o[1+i/8]-(*o-66-i/8*5?0:m?m+2[*v]>99:0)))m=1[*v],i=(**v*2-4+m/35-m/98*3)%14;}

নমুনা রান:

$ ./a.out Bm Gb A E G D Em F#
e 2---2---0---0---3---5---0---2---
B 3---2---2---0---3---7---0---2---
G 4---3---2---1---4---7---0---3---
D 4---4---2---2---5---7---2---4---
A 2---4---0---2---5---5---2---4---
E 2---2---0---0---3---5---0---2---

আন golfed

#include<stdio.h>
int main(int c,char**v){
     // o points to three characters per output line:
     //   string name, number for A, adjusted number for E (ASCII code minus 7)
     char* o="e0)B2)G2*D2+A0+E0)",
          i, // chord: A=0, A#=1, ..., G#=13, allowing also 3="E#" and 9="B#"
          m; // second character in chord name
     for (; *o; o+=3) {
          printf("%c ", *o);
          for (; *++v; ) {
               m = 1[*v],
               i = (**v*2-4+m/35-m/98*3)%14; // parse & adjust for sharp, flat
               printf("%c---",
                      i-(i>2)-i/9 // eliminate "E#", "B#"
                      +o[1+i/8] // get the number for a major chord
                      // adjust for minor...
                      -(*o-66-i/8*5
                        ? 0
                        : m ? m+2[*v]>99 : 0));
          }
          v -= c; // rewind argument pointer
          puts("");
     }
}

নন স্ট্যান্ডার্ড সি - 206 টি অক্ষর

যদি আমরা ভাষার স্পেসিফিকেশনের বিষয়ে চিন্তা না করি, জিসিসি নীচের ওয়ান-লাইনারকে একটি কার্যকরী বাইনারিতে সংকলন করতে পারে, যদিও এটি কে ওআরআর স্টাইল আর্গুমেন্ট ঘোষণার (এবং প্রিন্টএফের অন্তর্নিহিত ঘোষণার) সাথে সি 99 ভেরিয়েবল ডিক্লেয়ারেশন মিশ্রিত করে।

main(c,v)char**v;{for(char*o="e0)B2)G2*D2+A0+E0)",i,m;*o;o+=3,v-=c,puts(""))for(printf("%c ",*o);*++v;printf("%c---",i-(i>2)-i/9+o[1+i/8]-(*o-66-i/8*5?0:m?m+2[*v]>99:0)))m=1[*v],i=(**v*2-4+m/35-m/98*3)%14;}

2

সি ++, 432

#include <cmath>
#include <iostream>
F(int c){c-=65;return c*1.6+sin(c/5.+.3);}
T(int a,int s){if(s)return(a=(T(a,s-1)+2)%3)-=(a==1&s>2);return(a<7)*2;}
#define c(a,b) while(*(++j)==a)b;--j; 
#define O std::cout<<
main(int a,char*p[]){
int P=2;for(int i=-1;++i<6;P=2){O p[1][i];O" ";while(P<a){char*j=p[P++];
int f=F(*j);c('#',++f)c('b',--f)
int t=T(f,i)*3.5;if(*(++j)!='m'){--j;t+=(t==3);}
O(f-F(p[1][i])+t+24)%12;O"---";
}O'\n';}}

নোট করুন যে এটির প্রথম প্যারামিটার হিসাবে গিটার টিউনিং প্রয়োজন। (বেশিরভাগ অ-মানক-টিউনিংগুলি আপনাকে হাস্যকর আঙুল ভাঙার ফলাফল দেবে, তবে আমি অনুমান করি যে আপনি স্ট্যান্ডার্ড টিউনিংয়ে সন্তুষ্ট content)

হোটেল ক্যালিফোর্নিয়ার জন্য, আপনি এটি করতে পারেন $./a.out EBGDAE Cbm Gb Bbb Fb G D Em F# Bm F# G## D## F## C## D##m E##। ফলাফল:

E 2---2---0---0---3---5---0---2---2---2---5---0---3---5---0---2---
B 3---2---2---0---3---7---0---2---3---2---5---0---3---7---0---2---
G 4---3---2---1---4---7---0---3---4---3---6---1---4---7---0---3---
D 4---4---2---2---5---7---2---4---4---4---7---2---5---7---2---4---
A 2---4---0---2---5---5---2---4---2---4---7---2---5---5---2---4---
E 2---2---0---0---3---5---0---2---2---2---5---0---3---5---0---2---

উপরের চারটি স্ট্রিংকে অপ্রাপ্তবয়স্ক তৃতীয়াংশে সরিয়ে ফেলা খোলার স্ট্রিং ছাড়াই, এবং একটি স্পর্শকে স্পর্শ না করেই একটি আঙুল "ওভার" না রেখে অনেকগুলি বিপরীতক্রমে তিনটি এবং চার-স্ট্রিং কর্ড খেলা খুব সহজ করে তোলে। স্ট্রিংস ডিএফজি # বি ব্যবহার করে, "বিবিএম এফ বিবিএম জিবি ডিবি এবিএম ডিবি এফ বিবিএম এফ এফ 7 বিবিএম" (মার্মইড সং) এর মতো একটি জোর ক্রম খুব সহজেই কাজ করে। এটি কেবল একটি ফ্রেট উপরে এবং নীচে স্থানান্তর করা প্রয়োজন। একটি অর্ধ-পদক্ষেপ কীচেন্জ রয়েছে, তবে এর অর্থ হ'ল এক উত্তেজনা বাড়ানো। অন্য দুটি স্ট্রিংয়ের সাথে কী করা ভাল তা ভেবে দেখেনি।
সুপারক্যাট

@ সুপের্যাট: আকর্ষণীয়, আমি আগামীকাল আমার গিটারে এটি চেষ্টা করব ...
বন্ধ করে দিয়েছে

আমি আপনার মতামত শুনতে চাই। আমি কয়েক বছর, কয়েক বছর বাদে একটি গিটার তুলেছি এবং হাল ছেড়ে দিতে থাকি কারণ আঙুলগুলি উভয়কে স্বেচ্ছাচারী এবং বিশ্রী মনে হয়েছিল। তারপরে আমি কী টিউনগুলি সাধারণ আঙুলের অনুমতি দেয় তা নিয়ে ভাবতে শুরু করি। যেহেতু বন্ধ-ফর্ম chords এর অন্তরগুলি থাকে যা একটি গৌণ তৃতীয় থেকে নিখুঁত চতুর্থ পর্যন্ত থাকে, স্ট্রিংগুলিকে গৌণ তৃতীয়াংশে সুর দেওয়ার অর্থ প্রতিটি স্ট্রিং এমন একটি বিন্দুতে স্যাঁতসেঁতে যায় যা নীচের স্ট্রিংয়ের চেয়ে কম নয়। আমি যদি বাম-হাতের গিটার চেষ্টা করতে পারি তবে আমি স্ট্রিং অর্ডার বিপরীত করে নিখুঁত চতুর্থ চেষ্টা করতে পারি, কারণ এটি একই রকম হওয়া উচিত।
সুপারক্যাট

যেমনটি রয়েছে, অপ্রাপ্তবয়স্ক তৃতীয়াংশে সুর করার অর্থ হ'ল সর্বনিম্ন স্ট্রিংয়ের প্রথম আঙুলের প্রতিটি পজিশনের জন্য তিনটি বড় জোর বিপর্যয় এবং তিনটি ছোট জোর বিপর্যয় পাওয়া যাবে। শীর্ষস্থানীয় তিনটি স্ট্রিং জুড়ে দ্বিতীয় আঙুলটি রেখে একটিও সপ্তম বাচ্চা খেলতে পারে। মারমায়েড গানের জন্য, তৃতীয় চক্রটি শুরু করুন এবং এফ-বিবি-ডিএফ খেলুন (আঙুলগুলি দিয়ে ১-০-৩-৩-২) তারপরে এফ হ'ল এফএসিএফ (1-2-2-2)। গিগাবাইট একটি উদ্দীপনা, আঙ্গুলযুক্ত 1-2-2-4 (এফ এর মতো)। ডিবি ফিরতে ফিরে আসবে, ১-০-২-১৪। এবিএম ফিরে এসেছে, 1-2-4-4।
সুপারক্যাট

যথাযথ কর্ড নোটগুলি কী হওয়া উচিত তা কী-বোর্ডের সাহায্য নিয়ে কাজ করার পরে আমি সেই জায়গাটিতে পৌঁছাতে কেবল কয়েক ঘন্টা সময় নিয়েছিলাম যেখানে আমি সহজেই কিছু টুকরো খেলতে পারি (উপরে বর্ণিত মের্ময়েড গান সহ)। একবার আমি এই স্টাইলটি চেষ্টা করার পরে, এটি আশ্চর্যজনকভাবে প্রাকৃতিক অনুভূত হয়েছিল এবং আমি প্রতিটি বড় এবং গৌণ জ্যাজের তিনটি বিপরীত ব্যবহার করতে পারে সে উপায়টি আমি সত্যিই পছন্দ করি। যদি কেউ কেবল প্রধান এবং গৌণ chords চান, F-Ab-B-Eb-Gb-D এর মতো একটি সুরের তাত্ত্বিকভাবে সহজে আঙুলের সাহায্যে ছয় আঙুলের প্রধান এবং গৌণ chordsকে অনুমতি দেওয়া যেতে পারে (1-2-2-3-3-4-4 বা 1 -1-2-3-3-4) তবে বিপর্যয়গুলি ছাড়াই।
সুপারক্যাট

2

390 345 340 পোস্টস্ক্রিপ্ট

গিটার-প্র্যাকমেটিক পদ্ধতির সরলীকৃত (E আকৃতিটি কেবল একটি আকৃতির একটি প্রকরণ, একটি আঙুলের পরিবর্তন সহ একটি স্ট্রিংয়ের নিচে স্থানান্তরিত)। অন্যান্য উত্তরগুলি থেকে এনকোডড স্ট্রিং ধারণা ধার করা।

[/p{print}/x{exch}/e{cvx exec}/d{dup 0
get}/f{forall}(A0#1B2C3D5E7F8G:b;){}forall/m{dup
4 2 copy get 1 sub put}109{m 48}/+{[3 1 roll x{1
index add x}f]}/*{[0 0 2 2 2 0 0]x{load e 48 sub
+}f d 12 gt{-12 +}if d 6 gt{m -7 + 1}{0}ifelse 6
getinterval}>>begin[ARGUMENTS{*}f][(E)(A)(D)(G)(B)(e)]6{[x
e p( )p]x[x{[x e( )cvs p(---)p]}f]x()=}repeat

পূর্বে:

450 442 418 পোস্টস্ক্রিপ্ট

আমি এটির সাথে আউটপুট ফর্ম্যাটটিও ঠিক করেছি। (পূর্ববর্তী সংস্করণগুলি "ই" এর পরিবর্তে "ই ---" শুরু করেছিল))

<</i{index}/a{add}/p{pop}/x{exch}/g{getinterval}/r{print}/f{forall}/e{exec}>>begin<<65[0
2 3 5 -5 -4 -2]{1 i 1 a}f p 35{1 a}98{1 sub}109{x dup
4 20 put x}>>begin[ARGUMENTS{[x[0 5 12 17 21 24 29
0]x{load e}f x{1 i a x}f]dup 0 get 0 ge{0}{1}ifelse 7
g[0 -5 -10 -15 -19 -24 -29]0 1 6{2 copy get 3 i 2 i
get a 3 copy put p p}for x p 0 6
g}f][(E)(A)(D)(G)(B)(e)]6{[x cvx e r( )r]x[x{[x cvx
e( )cvs r(---)r]}f]x(\n)r}repeat

কীভাবে এটি চালাবেন: gsnd -q -- tab.ps Bm Gb A E G D Em F\#(শেল থেকে ধারালোটি আড়াল করুন)।

আন-golfed সংস্করণ প্রায় golfed একাধিক কঠিন। তবে আমি পুরোপুরি চেষ্টা করার চেষ্টা করেছি। সম্পাদনা করুন: কৌতুকপূর্ণ বিট সম্পর্কে আরও কয়েকটি মন্তব্য।

%!PS
<<    %axioms and operations
/t{2 2 1}    %major tetrachord
/m{t t 2}    %mixolydian mode
/u{2 1 2}    %minor tetrachord
/a{u u}      %aolian mode
/s{m m t}    %2.5-octave mixolydian intervals
/r{3 1 roll}
/${[exch 0 exch{1 index add}forall]}    %running sum: convert (relative)intervals to (abstract)fretstops
/+{[r exch{1 index add exch}forall pop]}    %scale array by scalar
/@{[r{2 copy get r pop}forall pop]}    %select array elements from array of indices
/&{0 1 3 index length 1 sub{    %array2 += array1
    2 copy get 3 index 2 index get add 3 copy put pop pop}for exch pop}
>>begin<<    %map ascii values to scaling functions
65[a]$    %generate fretstops of the A aolian scale to assign scalars to note names
[0 0 0 0 -12 -12 -12]&    %drop E F and G down an octave
{[exch/+ cvx]cvx 1 index 1 add}forall pop    %generate the pairs 'A'->{0 +}, 'B'->{2 +}
35{1 +}     %'#'-> scale up by one
98{-1 +}    %'b'-> scale down by one
109{dup 4 2 copy get 1 sub put}     %'m'-> tweak the 'third' down by one
%generate chord pattern from (string)
/*{[s]$       %generate fretstops of the E mixolydian scale
  [1 4 8 11 13 15 18]    %A-shape figured bass: IV chord of E mixolydian
  -1 +       %convert scale degrees to array indices
  @       %generate chord template by selecting indices from mixolydian scale
  exch{load exec}forall       %execute ascii values, scaling the pattern
  dup 0 get 0 ge{0}{1}ifelse 6 getinterval    %discard first note if it has fallen off the bottom
  [0 -5 -10 -15 -19 -24]&}    %subtract the string offsets
>>begin    %activate definitions
%(A)* pstack()= clear    %[0 0 2 2 2 0]
%(B)* pstack()= clear    %[2 2 4 4 4 2]
%(F#)* pstack()= clear    %[2 4 4 3 2 2]
%(Abm)* pstack()=    %[4 6 6 4 4 4]
[ARGUMENTS{*}forall]    %convert array of strings to array of patterns
[(E)(A)(D)(G)(B)(e)]    %array of string names
6{    %for each "string"
    [exch cvx exec print( )print]    %pop string name and print with space
    exch       %put names behind numbers
    [exch{     %for each "chord"
        [exch cvx exec( )cvs print(---)print]    %pop number, convert, print with trailing hyphens
    }forall]    %zip up chord array for next iteration
    ()=         %print a newline
    exch        %put numbers behind names
}repeat

এবং কীভাবে পরীক্ষা হিসাবে হাউজ অফ রাইজিং সান ?

04:51 PM:~ 0> gsnd -q -- tabb.ps Em G A C Em G B B Em G A C Em B Em B|sed 's/^/    /'
e 0---3---0---3---0---3---2---2---0---3---0---3---0---2---0---2---
B 0---3---2---5---0---3---4---4---0---3---2---5---0---4---0---4---
G 0---4---2---5---0---4---4---4---0---4---2---5---0---4---0---4---
D 2---5---2---5---2---5---4---4---2---5---2---5---2---4---2---4---
A 2---5---0---3---2---5---2---2---2---5---0---3---2---2---2---2---
E 0---3---0---3---0---3---2---2---0---3---0---3---0---2---0---2---

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