এএসসিআইআই আর্ট চেসবোর্ড


12

এই চ্যালেঞ্জে আপনাকে নীচের দাবাবোর্ডটি আঁকতে হবে এবং চালগুলি চালানোর অনুমতি দেবে।

1. অঙ্কন

প্রতিটি সাদা স্কোয়ারে 5x9 স্পেস থাকে।

প্রতিটি কালো স্কোয়ারে 5x9 কলোন থাকে।

বোর্ডটি চারদিকে কলোনির সীমানা দ্বারা বেষ্টিত।

টুকরাগুলি 5 টি অক্ষর প্রশস্ত এবং কেন্দ্রে স্কোয়ারের নীচের সারিতে বসে।

প্রশংসাপত্রগুলি 4 টি অক্ষর প্রশস্ত। তারা বামদিকে 3 টি ফাঁকা স্কোয়ার এবং ডানদিকে 2 টি ফাঁকা স্কোয়ার সহ কিছুটা দূরে ডানদিকে বসে। তারা বর্গাকার নীচে এক লাইন বসে।

Ofচ্ছিক ট্রেলিং নিউলাইন ব্যতীত বোর্ডের ক্ষেত্রের বাইরে কোনও সাদা স্থান থাকবে না।

বোর্ড এবং দাবাগানগুলি ঠিক যেমন প্রদর্শিত হবে তেমন আঁকা হবে:

  1. আপনি :কালো স্কোয়ার এবং সীমানায় পৃথক চিহ্নের পরিবর্তে এই চিহ্নটি আলাদা করতে পারেন এবং আপনি কালো চিহ্নগুলিতে ভিন্ন চিহ্নের পরিবর্তে @(তবে কালো স্কোয়ারগুলির জন্য ব্যবহৃত একই চিত্রটি ব্যবহার করতে পারেন না))

  2. আপনি যদি চান চান তবে আপনি মন্ত্রীরা একটি চরিত্রকে বামে সরিয়ে নিতে পারেন।

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:         :::::::::         :::www:::   _+_   :::::::::         ::::::::::
:  |_|_|  :: _,,:::   (/)   :::)@(:::   )@(   :::(/):::   _,,   ::|_|_|:::
:   |@|   ::"- \~::   |@|   :::|@|:::   |@|   :::|@|:::  "- \~  :::|@|::::
:   |@|   :::|@|:::   |@|   :::|@|:::   |@|   :::|@|:::   |@|   :::|@|::::
:  /@@@\  ::/@@@\::  /@@@\  ::/@@@\::  /@@@\  ::/@@@\::  /@@@\  ::/@@@\:::
::::::::::         :::::::::         :::::::::         :::::::::         :
:::::():::    ()   ::::():::    ()   ::::():::    ()   ::::():::    ()   :
:::::)(:::    )(   ::::)(:::    )(   ::::)(:::    )(   ::::)(:::    )(   :
::::/@@\::   /@@\  :::/@@\::   /@@\  :::/@@\::   /@@\  :::/@@\::   /@@\  :
::::::::::         :::::::::         :::::::::         :::::::::         :
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
:         :::::::::         :::::::::         :::::::::         ::::::::::
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
::::::::::         :::::::::         :::::::::         :::::::::         :
:         :::::::::         :::::::::         :::::::::         ::::::::::
:    ()   ::::():::    ()   ::::():::    ()   ::::():::    ()   ::::()::::
:    )(   ::::)(:::    )(   ::::)(:::    )(   ::::)(:::    )(   ::::)(::::
:   /__\  :::/__\::   /__\  :::/__\::   /__\  :::/__\::   /__\  :::/__\:::
:         :::::::::         :::::::::         :::::::::         ::::::::::
::::::::::         :::::::::   www   :::_+_:::         :::::::::         :
:::|_|_|::   _,,   :::(/):::   ) (   :::) (:::   (/)   :::_,,:::  |_|_|  :
::::| |:::  "- \~  :::| |:::   | |   :::| |:::   | |   ::"- \~::   | |   :
::::| |:::   | |   :::| |:::   | |   :::| |:::   | |   :::| |:::   | |   :
:::/___\::  /___\  ::/___\::  /___\  ::/___\::  /___\  ::/___\::  /___\  :
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

2. চলা

কলামগুলি বাম থেকে ডানে এএইচ এবং নীচে থেকে উপরে থেকে 1 থেকে 8 লেবেলযুক্ত। ব্যবহারকারী নিম্নলিখিত ফর্মটিতে একটি পদক্ষেপ প্রবেশ করতে সক্ষম হবেন:

<start column><start row><space><destination column><destination row>

উদাহরণস্বরূপ B1 C3বিশপের পদ্মের সামনে নাইটটি সরান (গেমটি সবে শুরু হয়েছে বলে ধরে নেওয়া) of

বিকল্পভাবে আইসিসিএফ সিস্টেমটি ব্যবহার করা যেতে পারে, যেখানে কলামগুলি এ থেকে এইচ এর পরিবর্তে 1 থেকে 8 লেবেলযুক্ত রয়েছে সুতরাং উপরে উল্লিখিত নাইট চালটি হয়ে যায় 21 33

নিম্নলিখিত চিত্র ( উত্স ) উভয় সিস্টেমকে স্পষ্ট করে:

এখানে চিত্র বর্ণনা লিখুন

সরানো কার্যকর করা হবে এবং নতুন বোর্ড প্রদর্শিত হবে। বোর্ড থেকে গন্তব্য চত্বরে প্রবক্তা দাবাড়কে মুছে ফেলার সাথে যে কোনও ফলাফল ক্যাপচার ঘটবে।

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

এন পাসেন্ট বা কাস্টিং সমর্থন করার প্রয়োজন নেই।

আপনি ধরে নিতে পারেন ইনপুটটি ভালভাবে গঠন করা হবে, যেমন সর্বদা উপরে বর্ণিত বিন্যাসে। চিঠিগুলি সর্বদা একই ক্ষেত্রে থাকবে, আপনি কী ক্ষেত্রে তা সিদ্ধান্ত নিতে পারেন।

৩. স্কোরিং এবং বোনাস

এটি কোড গল্ফ। সংক্ষিপ্ততম কোড জিতেছে।

যদি আপনার প্রোগ্রাম বা ফাংশন প্রচারের অনুমতি দেয় তবে -10% বোনাস। ব্যবহারকারীর তৃতীয় ইনপুট প্রবেশ করান, এবার নিম্নলিখিত বর্ণগুলির মধ্যে একটি: কিউবিআর এন only কেবলমাত্র শেষ সারিটির একটি পদ্মায় স্থানান্তর শেষ হলেই এটির অনুমতি দেওয়া উচিত। নামাঙ্কিত টুকরোটির জন্য মোটা বিনিময় হয়। QBRN।

-10% বোনাস যদি আপনার প্রোগ্রাম বা ফাংশনটি চালের বিপরীতের জন্য একটি বিশেষ "পূর্বাবস্থায়িত" পদক্ষেপ প্রয়োগ করে (যদি প্রয়োজন হয় তবে গেমের শুরুতে যতটা পিছনে ফিরে আসে)) স্পষ্টতই অপেশাদার খেলোয়াড়দের অবৈধ পদক্ষেপ করা সম্ভব হয় এবং তারা ইচ্ছা করতে পারে তাদের পূর্বাবস্থায় ফিরিয়ে আনতে। এই "পূর্বাবস্থায়" সরানোর জন্য ব্যবহারকারীকে যে ইনপুট দিতে হবে তা আপনি সংজ্ঞায়িত করতে পারেন (এটি সর্বদা একই হতে হবে)) যদি ব্যবহারকারী গেমের শুরুর পরেও পূর্বাবস্থায় ফিরে যাওয়ার চেষ্টা করে তবে আচরণটি অপরিজ্ঞাত।

বোনাস যোগফল, অর্থাত্ যদি আপনি উভয় বোনাসের জন্য যান তবে আপনি -20% পাবেন।


প্রথমে আপনি "একটি পদক্ষেপ প্রবেশ করুন" বলুন, এবং আমার কাছে এর অর্থ "মাত্র 1 পদক্ষেপ"। তারপরে "শুরুর দিক পর্যন্ত" পূর্বাবস্থায়
ফিরানোর

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

কালো স্কোয়ারে দুটি নাইটের ফরম্যাটিংটি মেলে না। যা সঠিক?
JWT

@ জেডব্লিউটি বাহ, আগে কেউ খেয়াল করেনি! এই পর্যায়ে আমি উভয় গ্রহণ করতে হবে। আমি দেখছি আপনি নিজের উত্তরটি আরও খানিকটা গল্ফ করেছেন। আমি আপনার উত্তর পরীক্ষা করে গ্রহণযোগ্যতা পরিবর্তন করার আগে, আপনি কি শেষ করেছেন?
স্তর নদী সেন্ট

@ স্টিভের্রিল আমি শেষ করেছি, হ্যাঁ।
JWT

উত্তর:


4

অক্টাভা, 776 688 বাইট

688:

  • প্রধান লুপের মধ্যে প্রবেশ করানো ফাংশনগুলি (উভয়ই কেবল একবার ব্যবহৃত হয়েছিল),
  • {'foo','bar'}{i}সামান্য দীর্ঘ স্থানে ব্যবহৃত সেল নোটেশন['foo';'bar'](i,:)

এখনও বোনাস কিছুই প্রয়োগ করা হয়নি।


আইসিসিএফ সিস্টেম ব্যবহার করে।

পদক্ষেপ বিবরণ এবং উত্স এবং গন্তব্য ক্ষেত্র একটি একক হোয়াইটস্পেস দ্বারা পৃথক করা আবশ্যক কোন নেতৃস্থানীয় শূণ্যস্থান আছে হতে পারে, তাই 42 44, সঠিক থাকাকালীন 42 44এবং 42 44নয়।

R=@repmat;s=[t='BFJbRJFB';R(('@    A')',1,8);t+1]';while 1q=' ';c=R(':',42,74);m=R([m=R(q,5,9) l=m+26;l m],4,4);c(2:41,2:73)=m;for i=1:8 for j=1:8 f=s(i,j);z=@(c)bitand(+f,c);if z(64)b=z(1)+1;W={') (',')@('}{b};U=43-5*j;Z=9*i-2;T=Z-2:Z;Q=Z-3:Z+1;if z(2)c(U+3,Q)={'/___\','/@@@\'}{b};a=c(U+2,T)={'| |','|@|'}{b};if z(4)c(U+1,Q)='"- \~';c(U,Z-3:Z)=' _,,';else c(U+1,T)=a;if z(8)c(U,T)='(/)';elseif z(16)||z(32)c(U,T)=W;c(U-1,T)={'_+_','www'}{1+z(32)/32};else c(U,Q)='|_|_|';end
end
else c(U+2,Z-2:Z+1)={'/__\','/@@\'}{b};c(U:U+1,Z-1:Z)=['()';')('];end;end;end;end;c
m=input(q,'s')-'0';x=m(1);y=m(2);X=m(4);Y=m(5);if s(x,y)~=q&&(s(X,Y)==q||mod(s(x,y)-s(X,Y),2))s(X,Y)=s(x,y);s(x,y)=q;end
end

কিছুটা অবারিত সংস্করণ:

# draw an empty chessboard
function n=cb
R=@repmat;
n=R(':',42,74);
m=R([m=R(' ',5,9) m+26;m+26 m],4,4);
n(2:41,2:73)=m;
end

# function n=put(n,f,c,r) :
#
# put a chessman f on column c and row r of chessboard n,
# returning new chessboard
# chessman is described by single character defined following way
# (please excuse naming bits by value rather than position):
# bit valued  127 -     unused
# bit valued  64  -     0 = field empty, 64 = field occupied.
# bits valued 32,16,8 - 0 = rook, 8 = bishop, 16 = king, 32 = queen
# bit valued  4 -       0 = not knight 4 = knight (only checked if "other piece" bit is set)
# bit valued  2 -       0 = pawn       2 = other piece
# bit valued  1 -       0 = white      1 = black

# this gives the following chars:

# pawns   - 64      (+1)  => @ , A
# knights - 64+4+2  (+1)  => F , G
# rooks   - 64+2    (+1)  => B , C
# bishops - 64+8+2  (+1)  => J , K
# kings   - 64+16+2 (+1)  => R , S
# queens  - 64+32+2 (+1) =>  b , a
# empty space - any character with bit valued 64 unset (space char does)

function n=put(n,f,c,r)
z=@(n)bitand(f-0,n);
if z(64)
    b=z(1);
    W=') ()@('(1+3*b:3+3*b);
    R=5*r;C=9*c;
    if z(2)
            n(46-R,C-5:C-1)='/___\/@@@\'(1+5*b:5+5*b);
            a=n(45-R,C-4:C-2)='| ||@|'(1+3*b:3+3*b);
            if z(4) # knight
                    n(44-R,C-5:C-1)='"- \~';
                    n(43-R,C-5:C-2)=' _,,';
            else
                    n(44-R,C-4:C-2)=a;
                    if z(8) # bishop
                            n(43-R,C-4:C-2)='(/)';
                    elseif z(16) # king
                            n(43-R,C-4:C-2)=W;
                            n(42-R,C-4:C-2)='_+_';
                    elseif z(32) # queen
                            n(43-R,C-4:C-2)=W;
                            n(42-R,C-4:C-2)='www';
                    else  # rook
                            n(43-R,C-5:C-1)='|_|_|';
                    end
            end
    else
            n(45-R,C-4:C-1)='/  \/@@\'(1+4*b:4+4*b);
            n(43-R:44-R,C-3:C-2)=['()';')('];
    end
end
end

# here we can easily define the chessboard.
s=['BFJbRJFB';repmat(('@    A')',1,8);'CGKcSKGC']';
c=cb;for i=1:8 for j=1:8 c=put(c,s(i,j),i,j);end;end
c

# We scan five characters. They must be positions in ICCF without leading spaces separated by single space.
while m=input('','s')-'0'
x=m(1)
y=m(2)
X=m(4)
Y=m(5)
# if the move is not allowed (capture piece of the same color or the start field is blank,
# do nothing
if s(x,y)==' ' || (s(X,Y) ~=' ' && mod(s(x,y)-s(X,Y),2)==0) continue; end;
# make the move
s(X,Y)=s(x,y);
s(x,y)=' ';
# redraw the board
c=cb;for i=1:8 for j=1:8 c=put(c,s(i,j),i,j);
end end
c
end

আমি এটি আইডোন.কম এ চালিয়েছি এবং বোর্ডটি প্রদর্শিত হয়েছে তবে কোনও ইনপুট গ্রহণ করতে পারা যায় না। এটি টিউটোরিয়ালসপয়েন্ট.কমডিংগ্রাউন্ড htm এ দুর্দান্ত কাজ করে (আপনি বাদশাহ এবং রানী বিপরীত না থাকলে - যে কোনও পাকা দাবা খেলোয়াড় আপনাকে বলবে যে এটি কোনও পার্থক্য করে makes) বন্ধুত্বপূর্ণ ব্যক্তিকে ক্যাপচার না করার জন্য আমি আপনাকে একটি অতিরিক্ত +1 দেব টুকরো টুকরো এবং আরও একটি শালীন ব্যাখ্যার জন্য, যদি আমি পারতাম।
স্তরের নদী সেন্ট

@ স্টিভেরিলিল প্রকৃতপক্ষে, রাজা এবং রানীর অবস্থানগুলি বিপরীত হয়েছিল, এটি দেখানোর জন্য ধন্যবাদ। এটি এখন স্থির।
pawel.boczarski

5

রুবি, 715 696 693 683 বাইট

এটি মোটামুটি অগোছালো সমাধান তবে এই মুহূর্তে আরও পরিষ্কার করার ধৈর্য আমার নেই।

কোনও বোনাসই করা হয়নি।

আইসিসিএফ সিস্টেম ব্যবহার করে।

a,b,c=->f,x,y,p{p.map{|ln|ln.gsub(/\d/){|z|f*(z.to_i)}.tr('AB',x+y)}},Array.new(64){|i|((i%56<8?[4,2,3,5,6,3,2,4][i%56]:(i-8)%40<8?1:0)<<2)+(i<16?2:0)},':'*74
loop{puts c
b.each_slice(8).with_index{|r,y|d,*e=r.map.with_index{|v,x|a[*([[' '],[':']][(x+y)%2]+[[' ','_'],['@','@']][v&2==2?1:0]+[('9@9@9@9@9;9@4()3@4)(3@3/BB\2@9;9@3_,,3@2"- \~2@3|A|3@2/BBB\2;9@3(/)3@3|A|3@3|A|3@2/BBB\2;9@2|_|_|2@3|A|3@3|A|3@2/BBB\2;3www3@3)A(3@3|A|3@3|A|3@2/BBB\2;3_+_3@3)A(3@3|A|3@3|A|3@2/BBB\2'.split(';').map{|s|s.split '@'})[v>>2]])]}
d.zip(*e).each{|r|puts ":#{r.join}:"}}
puts c
gets.scan(/(.)(.) (.)(.)/){|f,g,h,i|j,k=63+(f.to_i)-(g.to_i)*8,63+(h.to_i)-(i.to_i)*8
b[k],b[j]=b[j]>0?b[j]: b[k],0}}

দুর্দান্ত, মনে হয় নিখুঁতভাবে কাজ করছে!
লেভেল নদী সেন্ট

@ লেভেলরিভারস্ট মনে হচ্ছে এই উত্তরটি বর্তমানে গৃহীত উত্তরগুলির চেয়ে কম sh
এরিক দি আউটগল্ফার

3

পাইথন, 1136 890 753 বাইট

আংশিক উত্তরের জন্য ক্ষমা চাইলেও আমি একজন নবাগত এবং আমি এই চ্যালেঞ্জটি সত্যই উপভোগ করেছি। আমি জানি এটি সম্ভবত সত্যই ভারবোজ তবে এখানে আমার রুক্ষ খসড়াটি রয়েছে:

y=':'*9
z=' '*9
b='::/___\::'
c=':::|@|:::'
d=':::)@(:::'

ps = {'r': [y,'::|*|*|::', c, c,b],'n': [y,':::,,::::', '::"- \~::', c,b],'b': [y,':::(/):::',c,c,b],'k': [':::www:::',d,c,c,b],'q': [':::*+*:::',d,c,c,b],'p': [y, '::::():::','::::)(:::',':::/__\::',y]}

def cell(p,c):
  if p == '!':
    return ([z]*5,[y]*5)[c]
  s = []
  for l in ps[p.lower()]:
    l = (l.replace('@', ' '), l.replace('_', '@'))[p.islower()]
    l = (l.replace(':', ' '), l)[c].replace('*', '_')
    s.append(l)
  return s


b = {8:'rnbkqbnr',7:'p'*8,2:'P'*8}
b[1] = b[8].upper()
for i in range(3,7):
  b[i] = '!'*8

o=[y*8]
c=0
for r in b:
  l=['']*5
  for p in b[r]:
    cc=cell(p,c)
    for i in range(0,5):
      l[i]+=cc[i]
    c=not c
  o.extend(l)
  c=not c
o.append(o[0])
for l in o:
  print ':'+l+':'

উত্তরের জন্য ধন্যবাদ. ভাষা এবং বাইট গণনা সহ উত্তরের একটি শিরোনাম লাইন অন্তর্ভুক্ত করা আমাদের প্রথা। এই কি ভাষা? এটি দেখতে পাই অজগরটির মতো তবে আমি এটি আইডোন ডটকম
স্তর নদী সেন্ট

1
চারপাশের সমস্ত স্থান সরিয়ে ফেলুন =এবং এর মধ্যে যদি একটি forবা ifকেবল একটির লাইন থাকে তবে এটি সমস্ত একই লাইনে যেতে পারে। পাইথনে গল্ফিংয়ের টিপস একবার দেখুন ।
mbomb007
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.