একটি খালি গো বোর্ডে একটি পাথর রাখুন


34

আরও দেখুন: একটি গো বোর্ডে পদক্ষেপ নিন

কার্য

গো একটি বোর্ড খেলা যেখানে দুটি খেলোয়াড় (কৃষ্ণ এবং সাদা) একটি 19 × 19 বোর্ডে গ্রিড লাইনের ছেদগুলিতে পাথর রাখে। কালো প্রথমে সরানো - উদাহরণস্বরূপ, ডি 4 এ:

       স্থানাঙ্ক যেতে

এই চ্যালেঞ্জে আপনাকে অবশ্যই D4ইনপুট হিসাবে গো বোর্ডের সমন্বয় নিতে হবে এবং প্রদত্ত পয়েন্টে প্রথম পদক্ষেপের সাথে বোর্ডের একটি ASCII প্রতিনিধিত্ব করবে।

মনে রাখবেন যে কোনও কলাম নেই I. এটি historতিহাসিকভাবে, জে এবং এল এর সাথে বিভ্রান্তি হ্রাস করতে is

এই আউটপুটে 19 টি লাইন রয়েছে, প্রতিটি 19 টি অক্ষর ধারণ করে। এটিতে পাথরের সাথে পয়েন্টটি চিহ্নিত রয়েছে O। বোর্ডে খালি পয়েন্ট হিসাবে দেখানো হয় .নয়টি ছাড়া, তারকা পয়েন্ট (এ D4, D10, D16, K4, K10, K16, Q4, Q10, এবং Q16), চিহ্নিত করা হয়েছে যা *

উদাহরণস্বরূপ, F5একটি ইনপুট হিসাবে প্রদত্ত , আপনার উত্তরের আউটপুট অবশ্যই হবে:

...................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
.....O.............
...*.....*.....*...
...................
...................
...................

এবং Q16ইনপুট হিসাবে প্রদত্ত , আপনার আউটপুট অবশ্যই হবে:

...................
...................
...................
...*.....*.....O...
...................
...................
...................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
...................
...*.....*.....*...
...................
...................
...................

বিধি

  • আপনি একটি ফাংশন লিখতে পারেন যা আর্গুমেন্ট হিসাবে স্থানাঙ্ক গ্রহণ করে, বা এমন একটি প্রোগ্রাম যা কমান্ড লাইন থেকে বা থেকে স্থানাঙ্কটি পড়ে STDIN

  • আপনি নিম্ন-কেস বা উচ্চ-কেস ক্ষেত্রে ইনপুট গ্রহণ করতে বেছে নিতে পারেন, তবে আপনার উত্তর দুটি হ্যান্ডেল করার প্রয়োজন নেই need

  • ইনপুটটি সর্বদা একক স্ট্রিং এর মতো a1বা T19কখনও স্ট্রিং + সংখ্যা বা দুটি স্ট্রিং থাকে না।

  • আপনি যদি একটি পূর্ণ প্রোগ্রাম লিখেন তবে আপনার উত্তরটি অবশ্যই STDOUTএকটি স্ট্রিং হিসাবে মুদ্রণ করা উচিত ally যদি আপনার উত্তরটি কোনও ফাংশন হয় তবে আপনি মুদ্রণ করতে  পারেন STDOUT, বা স্ট্রিংটিতে ফিরে আসতে পারেন, বা  একটি অ্যারে / স্ট্রিংগুলির তালিকা (সারিগুলি) দিতে  পারেন , বা একটি দ্বি-মাত্রিক অ্যারে বা নেস্টেড অক্ষরের তালিকাটি ফিরিয়ে আনতে পারেন ।

  • এটি । বাইটস মধ্যে সংক্ষিপ্ত উত্তর।


কেবল নিশ্চিতভাবেই, "আর্গুমেন্ট হিসাবে স্থানাঙ্ক" বলতে বোঝানো হয়েছে যে আমরা দুটি যুক্তি নিতে পারি না, যেমন f("G", 14), সঠিক?
FryAmTheEggman

8
২০ কে অভিনন্দন !!
লুইস মেন্ডো

2
"এটি, icallyতিহাসিকভাবে, জে এবং এল এর সাথে বিভ্রান্তি হ্রাস করার জন্য।" তবে জে এবং এল দুজনেই বোর্ডে আছেন ??!
সময়সূচি দিন

2
হাঁ। এছাড়াও, অবশ্যই, অনুপস্থিত চিঠিটি সম্ভবত কোনও কিছুর চেয়ে আরও বিভ্রান্তি ও বিস্মিত করেছে ...
লিন

2
নীচের অংশগুলি পৃথক দিকে ঘুরিয়ে যাওয়ায় @ ফ্যাটালাইজ, জে এবং এল দেখতে বেশ স্বতন্ত্র দেখাচ্ছে। জে এবং এল এর সাথে সাথে একটি নিচে নেমে আসে, অন্যটি উপরে যায়। কিন্তু আমি এবং J একটু একই, এবং তাই আমি, L এবং আমি ... হয়
ilkkachu

উত্তর:


9

এমএটিএল , 33 বাইট

'*O.'19: 6\4=&*Hj1&)Uw64-t8>-&(P)

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

'*O.'    % Push string with needed characters. Will be indexed into
19:      % Push numeric vector [1 2 ... 19]
6\4=     % 1 for values that equal 4 mod 6, 0 for the rest
&*       % Multiply by transposed version of itself with broadcast. This gives
         % the 19×19 board with 0 instead of '.' and 1 instead of '*'
H        % Push 2. This will correspond to 'O' (stone)
j        % Input string, such as 'Q16'
1&)      % Split into its first char ('Q') and then the rest ('16')
U        % Convert to number (16)
w        % Swap, to move 'Q' to top
64-      % Subtract 64. Thus 'A' gives 1, 'B' gives 2 etc
t8>-     % Duplicate. Subtract 1 if it exceeds 8. This corrects for missing 'I'
&(       % Fill a 2 at coordinates given by the number and the letter
P        % Flip upside down, because matrix coordinates start up, not down
)        % Index the string '*O.' with the 19×19 array containing 0,1,2.
         % Implicitly display

16

সি, 212 195 193 181 171 132 103 98 বাইট

সংরক্ষিত 1 বাইট @ ফ্রিআমএইজিগম্যানকে, 5 বাইট ধন্যবাদ @ অর্ল্পকে

f()খেলার পজিশনের সাথে কল করুন (অবশ্যই মূলধনী হওয়া উচিত) এবং এটি ফলাফল বোর্ডটি মুদ্রণ করে।

i;f(char*p){for(i=380;i--;)putchar(i%20?i^20*atoi(p+1)+64-*p+(*p>72)?i%6^4|i/20%6^3?46:42:79:10);}

আদর্শে এটি চেষ্টা করুন


2
98 বাইটputchar(i%20?i^20*atoi(p+1)+64-*p+(*p>72)?i%6^4|i/20%6^3?46:42:79:10)
orlp

ধন্যবাদ। আমি সেই মডুলো এক্সপ্রেশন কমাতে একটি উপায় খুঁজছিলাম।
owacoder

9

সি (জিসিসি), 132 128 109

i;m;f(char*s){for(i=380;i--;putchar(m?m^84-*s+(*s>73)|(i/20+1)^atoi(s+1)?m%6^4|i/20%6^3?46:42:79:10))m=i%20;}

Ideone

এমন একটি ফাংশন যা বোর্ডকে স্টডআউটে মুদ্রণ করে। মূলধন হতে চিঠির সমন্বয় প্রয়োজন। এক লুপে মুদ্রণ পূর্ববর্তী নেস্ট করা লুপ পদ্ধতির চেয়ে কিছুটা ছোট বলে মনে হচ্ছে।


7

ম্যাটল্যাব, 135 বাইট

প্রথম প্রচেষ্টা, চালাক কিছুই নয়, কেবল অন্যরা কতটা ভাল করতে পারে তা দেখার জন্য:

function go(a)
b=repmat('.',19);
b(4:6:end,4:6:end)='*';
a=sscanf(a,'%c%d');
a(1)=a(1)-64;
if a(1)>8
a(1)=a(1)-1;
end
b(20-a(2),a(1))='0'

ব্যবহার:

go('T19')

4
পিপিসিজিতে আপনাকে স্বাগতম! বাইট হ্রাস করার জন্য কিছু পরামর্শ: 1 চরের সাথে ফাংশনের নাম ব্যবহার করুন (বা এর সাথে স্ক্রিপ্ট a=input('');); নতুন লাইন সরান; পরিবর্তন '*'করার জন্য 42এবং '0'জন্য 48; প্রতিস্থাপন endদ্বারা 19; যৌক্তিক মানটি সরাসরি ifশাখার পরিবর্তে বিয়োগ করুন । প্রকৃতপক্ষে, আপনি শেষ ফাইভ লাইনগুলি প্রতিস্থাপন করতে পারেনb(20-a(2),a(1)-64-(a(1)>8))=48
লুইস মেন্ডো

হাই এবং পিপিসি-তে আপনাকে স্বাগতম। যদি আমার ভুল না হয় তবে আপনার কোডটি 137 বাইট দীর্ঘ এবং 135 নয় ((আমার ধারণা এটি খুব বেশি গুরুত্ব পাবে না, তবে আমি আপনাকে কেবল জানাতে চেয়েছি)
দাদা

7

রুবি, 93 91 বাইট

কমান্ড লাইনে ইনপুট নেয়, যেমন $ ruby script.rb Q16

19.downto(1){|c|puts ([*?A..?T]-[?I]).map{|d|d+c.to_s==$*[0]??O:"DKQ"[d]&&c%6==4??*:?.}*""}

এটি repl.it- এ পরীক্ষা করুন (যেহেতু repl.it কমান্ড লাইন আর্গুমেন্ট গ্রহণ করে না: সেখানে একটি ল্যাম্বডায় আবৃত: https://repl.it/CkvT/1

Ungolfed

19.downto(1) do |row|
  puts ([*?A..?T] - [?I]).map {|column|
    if column + row.to_s == ARGV[0]
      "O"
    elsif "DKQ"[column] && row % 6 == 4
      "*"
    else
      "."
    end
  }.join
}

আমি মনে করি আপনি $><<পরিবর্তে না করে একটি বাইট সংরক্ষণ করতে পারেন puts । নিশ্চিত না, যদিও।
মনিকার লসুইট

@ কিপ্যায়েট্যাক্স হায়রে, আমাকে অন্য কোথাও একটি নতুন লাইন যুক্ত করতে হবে।
জর্দান

ওহ, হ্যাঁ কিছু মনে করবেন না
তহবিল মনিকার লসুইট

6

যান, 319 286 বাইট

import(."strconv"
."strings")
func g(c string)(s string){p:=SplitN(c,"",2)
n,_:=Atoi(p[1])
for i:=19;i>0;i--{
for j:= 'a';j<'t';j++{
if j=='i'{
}else if n==i&&ContainsRune(p[0],j){s+="o"
}else if((i==4||i==10||i==16)&&(j=='d'||j=='k'||j=='q')){s+="*"
}else{s+="."}}
s+="\n"}
return}

সম্ভবত গল্ফযোগ্য কিছুটা ছেড়ে দিন, আমি একজন শিক্ষানবিশ


নাম পরিবর্তন করে partআপনি pকি 9 টি অক্ষর সংরক্ষণ করতে পারবেন ?
কর্সিকা

গোতে গল্ফ করার টিপস। আমি আপনার উত্তরে সেগুলি প্রয়োগ করার স্বাধীনতা নিয়েছি।
এমবিলেম

আপনি কি লক্ষ্য করেছেন যে "ভাষা নির্বাচনের জন্য +1" মন্তব্যে পোস্টের চেয়ে বেশি উপকার রয়েছে? (এমনটি ঘটে যে মন্তব্যে আরও বেশি অগ্রগতি রয়েছে তবে এ জাতীয় মন্তব্যের জন্য এটি অপ্রত্যাশিত)
দাদা

4

রুবি, 130 128 121 + 3 ( -nপতাকা) = 124 বাইট

স্যুইচ করা -pহয়েছে -nকারণ এর puts bচেয়ে এক বাইট কম$_=b*$/

~/(.)(.+)/
b=(1..19).map{?.*19}
(a=3,9,15).map{|i|a.map{|j|b[i][j]=?*}}
b[19-$2.to_i][([*?A..?T]-[?I]).index$1]=?o
puts b

আপনি 3, 9 এবং 15 এর হার্ডকোডিংয়ের পরিবর্তে সূচক মোড 6 হয় কিনা তা পরীক্ষা করে বাইট সংরক্ষণ করতে পারবেন?
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান এটি হতে পারে, তবে আমি এখনও এমন একটি সমাধান বের করতে পারি যা এটি করে।
মান কালি

4

পাইথন, 148 145 136 130 121 119 116 বাইট

-3 বাইটস @ রুটটোকে ধন্যবাদ

lambda x,r=range(19):[[".*o"[[i%6==j%6==3,2][j==ord(x[0])-(x>"I")-65and-~i==int(x[1:])]]for j in r]for i in r[::-1]]

বেনামে ল্যাম্বদা ফাংশন, "A1" (বড় অক্ষর) রূপের ইনপুট নেয় এবং অক্ষরের তালিকাগুলির একটি তালিকা আউটপুট দেয় (পাইথনে লেন == 1 টি স্ট্রিং)


".*oo"[2*(j==ord(x[0])-(x[0]>"I")-65and int(x[1:])==i+1)+(i%6==j%6==3)]"o"if...else"*"if...else"."
21:52

এছাড়াও, আমি মনে করি আপনি আরও 3 টি বাইট সংরক্ষণ করার (x>'I')পরিবর্তে ব্যবহার করতে পারেন (x[0]>'I')
রুটটউ

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

4

> <> , 98 96 বাইট

'_U'i-:b)-0\
+*a$%cv?(0:i<
{*+{4*\+
+4gf-o>1-:?!;:{:}=3*&::aa+%::0=2*&+&6%1-}-aa+,6%{*9=&
=9^^

মনে রাখবেন যে 0x14প্রথমটির পরের প্রথম সারিতে 'একটি 0x19রয়েছে 9এবং ^শেষ লাইনের প্রথম এবং প্রথমটির মধ্যে একটি রয়েছে । এটি অনলাইন চেষ্টা করুন!

ইনপুটটি ম্যাপ করা হয়েছে যাতে A-Tহয়ে যায় 1-19(0 টি একটি কাল্পনিক "নিউলাইন" কলামটি চিহ্নিত করে) এবং পূর্ণসংখ্যার সারি সংখ্যাটি 1 দ্বারা হ্রাস করা হয় 37 প্রোগ্রামটি নীচের সারি থেকে একটি চরটি বেছে নেওয়ার সাথে সাথে নীচে সারি থেকে একটি চর বেছে নিচ্ছে ( আপনি কোডবক্সে আক্ষরিক নতুন লাইন প্রবেশ করতে পারবেন না - এই অ্যাকাউন্টে 15 টি অফসেট করুন। নিউলাইনগুলি মাধ্যমে চেক করা হয় i % 20 == 0, এবং তারা পয়েন্টগুলি চেক করা হয় ((i%20-1)%6)*((i/20)%6) == 9


4

এফ #, 241 237 225 216 214 211 বাইট

let G(c:string)=for k=1 to 380 do printf(if k%20=0 then"\n"elif"_ABCDEFGHJKLMNOPQRST".IndexOf c.[0]=k%20&&19-k/20=int(c.Substring 1)then"o"elif(k%20=4||k%20=10||k%20=16)&&(k/20=3||k/20=9||k/20=15)then"*"else".")

কৌতূহল এই এক ... আমি ভাবছি এটি আরও খাটো করা যায় কিনা।

সম্পাদনা: একটি বাগ সংশোধন করা হয়েছে, সংখ্যার কিছু জায়গায় অন্যদের সংখ্যা মুছে ফেলা হয়েছে, কোনওভাবে একই গণনা দিয়ে শেষ হয়েছে। পরে সম্পন্ন হয়ে ওঠার জন্য সংখ্যাগুলি পরিবর্তন করতে পারে

সম্পাদনা 2: স্বতঃস্ফূর্তভাবে পাল্টা শর্তাবলীর একটি বানান করে আরও বাইট সংরক্ষণ করেছে।

সম্পাদনা 3: অন্য একটি বাগ ঠিক করা হয়েছে: শেষ র‌্যাঙ্কে টুকরো টুকরো করার জন্য এখনই কাজ করা উচিত এবং আমি এখানে থাকাকালীন দুটি বাইট সংরক্ষণ করতে সক্ষম হলাম।

এটি অনলাইনে চেষ্টা করুন


ওহ যে সমস্যা ছিল। মজার বিষয়, এটি এমন এক জিনিস যা আমি
দু'বারও দেখিনি

3

রেটিনা , 134 129 122 বাইট

মার্টিন ইন্ডারকে 11 বাইটস এবং আরও 1 টির অনুপ্রেরণার জন্য ধন্যবাদ।

S2=`
[K-S]
1$&
T`xL`d9d
.+
$*
$
aaab
a
bbbcbb
b|c
¶$0
c
ddd.
d
...*..
b
19$*.
1(1)*¶1(1)*¶((?<-2>.+¶)*(?<-1>.)*).
$3O
O^$`

এটি অনলাইন চেষ্টা করুন!


2
আরে, আপনার সোনার ব্যাজটিতে অভিনন্দন!
লুইস মেন্ডো

3

পার্ল, 132 বাইট

-৩ বাইট @ ডম হেস্টিংসকে ধন্যবাদ

@v=eval"[('.')x19],"x19;@{$v[$_]}[@t]=("*")x3for@t=(3,9,15);pop=~/\d+/;$v[19-$&][($t=ord$`)-65-($t>73)]=O;map{say}map{join"",@$_}@v;

কমান্ড লাইন ইনপুট নেয়। -M5.010তু রান দরকার । এই ক্ষেত্রে :

$ cat go_board.pl
@v=eval"[('.')x19],"x19;@{$v[$_]}[@t]=("*")x3for@t=(3,9,15);pop=~/\d+/;$v[19-$&][($t=ord$`)-65-($t>73)]=O;map{say}map{join"",@$_}@v;
$ perl -M5.010 go_board.pl Q16

আমি মনে করি এটি আরও সংক্ষিপ্ত হতে পারে তবে আমি কীভাবে বুঝতে পারি না ... আপনি যদি করেন তবে দয়া করে আমাকে জানান!


আবারও আরও যাদু ভেরিয়েবলের দুর্দান্ত ব্যবহার! আমি এটি সঠিকভাবে পরীক্ষা করে দেখিনি তবে আমি মনে করি আপনি @v=([(".")x18])x18;তালিকাটি আরম্ভ করার সাথে আরও কিছু বাঁচাতে পারবেন ... এর চেয়ে আরও ভাল উপায় আর হতে পারে তবে আমি এখনই টার্মিনালে নেই! আমি মনে করি আপনি @{...}প্রসারকে ডিফেরেন্সিং তীরগুলির সাথেও প্রতিস্থাপন করতে পারেন : $v[$_]->[@t]আবার অনির্যুক্ত থাকলেও! এছাড়াও আমি আশা করি আপনি কোড পরিবর্তনের পরামর্শ দেওয়ার বিষয়ে আমার আপত্তি করবেন না ...
ডম হেস্টিংস

1
@ ডোমহাস্টিংস অবশ্যই আমি কিছু মনে করি না, বিপরীতে, আমি বরং আপনাকে উন্নতির পরামর্শ দিতে উত্সাহিত করব! @v=([(".")x19])x19কাজ করে না (আমি এটি বিটিডব্লিউর আগে চেষ্টা করেছি), কারণ এটি কেবলমাত্র একটি অ্যারেরেফ তৈরি করে এবং এটি রেফের চেয়ে 19 বার রেফারেট করে, তাই শেষ পর্যন্ত আপনার কেবল 1 বার লাইনটি 19 বার নকল হয়ে যায়)। @{..}আপনি প্রস্তাবিত হিসাবে প্রতিস্থাপন কাজ করে না বলে মনে হচ্ছে। আমি অনুমান করছি এটি কারণ আমি একটি স্লাইসে কাজ করছি এবং কেবল একটি উপাদান নয়। আপনার যদি অন্য কোনও পরামর্শ থাকে তবে নির্দ্বিধায় পরামর্শ দিন! :)
দাদা

1
অভিশাপ, অবশ্যই এটি একই হতে চাই ... আমি ব্যবহার পরিচালিত করেছি evalজন্য -3 যদিও: @v=eval"[('*')x19],"x19;। এবং আপনি অ্যারেরেফ দিয়ে 100% সঠিক ... একটি 1D অ্যারে ব্যবহার করা এবং সেই সূচীতে কাজটি করা কি সম্ভবত সম্ভব? এই আরও পরে খেলতে পারে!
ডম হেস্টিংস

@ ডোমহাস্টিংস -৩ বাইটের জন্য ধন্যবাদ। সত্যিই, 1D অ্যারে দিয়ে চেষ্টা করার কিছু রয়েছে। আমি শীঘ্রই এটি চেষ্টা করব
দাদা

3

ব্যাচ, 322 310 308 বাইট

@echo off
set/pi=
set/aa=0,b=1,c=2,d=3,e=4,f=5,g=6,h=7,j=8,k=9,l=10,m=11,n=12,o=13,p=14,q=15,r=16,s=17,t=18,x=%i:~1%-1,y=%i:~,1%,z=y+1
for /l %%r in (18,-1,0)do call:l %%r
exit/b
:l
set s=...*.....*.....*...
call set t=%%s:~%1,1%%
if %x%==%1 call set s=%%s:~,%y%%%o%%s:~%z%%%
call echo %%s:.*=.%t%%%

ব্যাখ্যা: স্টিডিনে পাথরের জন্য অনুরোধ করে শুরু হয়। তারপরে, প্রতিটি সম্ভাব্য কলামের জন্য ভেরিয়েবল সেট করে, যাতে এটি পাথরের প্রথম অক্ষরটিকে yস্থানাঙ্ক হিসাবে পরিবর্তনশীল হিসাবে মূল্যায়ন করতে পারে । xস্থানাঙ্ক থেকে 1 টি বিয়োগ করে কারণ এটি 1-সূচকযুক্ত এবং আমরা 0-সূচিযুক্ত এবং আরও z=y+1পরে গণনা করতে চাই কারণ এটির পরে প্রয়োজন। তারপরে, rপ্রতিটি সারির জন্য 18 থেকে নীচে 0 পর্যন্ত লুপ হয়। স্ট্রিং নেয় ...*.....*.....*...এবং rপরে অবস্থানের জন্য অক্ষরটি বের করে । উপর xতম সারি, yম অক্ষরটি অবশ্যই কোন প্রতিস্থাপিত হয়েছে o। অবশেষে, এসগুলি পূর্বে উত্তোলিত অক্ষর দ্বারা .*একটি .প্লাস দিয়ে প্রতিস্থাপন করা হবে ; এটি 4, 10 এবং 16 সারিগুলির কোনও বিকল্প নয় তবে এটি অর্জনের এটি সবচেয়ে সংক্ষিপ্ততম উপায়। (আমি ব্যবহার করতে.*কারণ প্রতিস্থাপন *ব্যাচে দৃশ্যত অবৈধ)


2

পাওয়ারশেল ভি 2 +, 157 152 বাইট

$x,$y=[char[]]$args[0];$a=,0*19;0..18|%{$a[$_]=,'.'*19};3,9,15|%{$i=$_;3,9,15|%{$a[$_][$i]='*'}};$a[-join$y-1][$x-65-($x-gt73)]='O';$a[18..0]|%{-join$_}

(আমি মনে করি আমি কমা-অপারেটরের সাথে একরকম অদ্ভুত বিভ্রান্তির দিকে চলে এসেছি, সুতরাং অ্যারের নির্মাণটি তার চেয়ে আরও দীর্ঘতর হবে)

এর মাধ্যমে বড় হাতের স্ট্রিং হিসাবে ইনপুট নেয় $args[0], এটিকে চর-অ্যারে হিসাবে কাস্ট করে, প্রথম অক্ষরটি $xএবং বাকী অক্ষরগুলিকে এতে সংরক্ষণ করে $y। এটি কার্যকরভাবে অক্ষর / সংখ্যায় ইনপুট বিভক্ত করে।

তারপরে আমরা আমাদের বহুমাত্রিক অ্যারে তৈরি করি $a। আমরা আকারের একটি অ্যারের প্রাক পূরণ 19সঙ্গে 0কমা দ্বারা অপারেটর ব্যবহার গুলি। তারপরে আমরা আবার কমা অপারেটরটি ব্যবহার করে 0..18প্রতিটি উপাদানকে $a[$_]পিরিয়ডের অ্যারের পরিবর্তে সমান করতে লুপ করি । (এনবি - তাত্ত্বিকভাবে, এটিকে ঘনীভূত করতে সক্ষম হওয়া উচিত $a=,(,'.'*19)*19, তবে এটি সূচীকরণ কার্যভারের সাথে সঠিকভাবে কাজ করবে বলে মনে হচ্ছে না ... পুরো কলাম সেট হয়ে যাওয়ার পরে আমি ক্ষতবিক্ষত হয়েছি *)

এরপরে, আমরা 3,9,15সংশ্লিষ্ট উপাদানগুলিতে সেট করতে দুবার লুপ করব *। এরপরে আমরা পাথর স্থাপনের জন্য সঠিক স্থানে এটি সূচী করি O। এটা করার জন্য, আমরা বিয়োগ 65থেকে $x(অর্থাত, হওয়া ASCII "একটি" 65 হয়, এবং আমরা শূন্য ইন্ডেক্স), এবং একটি বুলিয়ান-টু-int- এ ঢালাই ব্যবহার করা হয় তবে একটি অতিরিক্ত এক subtracts $xচেয়ে বড় 73(অর্থাত, হওয়া ASCII "আমি" )।

এখন, আমাদের আউটপুটটি বিপরীত হয়েছে (যেমন, উপরের-বামে হবে A1), সুতরাং আমাদের সাথে অ্যারেটি বিপরীত করা দরকার $a[18..0]। পরিশেষে, আমরা প্রতিটি -joinস্ট্রিং এড আউটপুট এক স্ট্রিং তৈরি করতে।


2

> <> , 124 বাইট

আমার সি উত্তর হিসাবে ঠিক একই পদ্ধতির ব্যবহার। ইনপুট অবশ্যই দশমিক সংখ্যার পরে মূলধনী হতে হবে।

88*i:&-&'I')+0 v
*a&-'0'v!?)0:i&<+
+**2a&~/*a'&'&
:;!?:-1<o'O'v!?=&:&
{*?!v'*'o63.>:6%4=}:a4*+'x'%aa*)
*2a:/  av?%
.37o<'.'<

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

88*i:&-&'I')+0 v         'Push 64-<first input char>+(<first input char> > 'I')
*a&-'0'v!?)0:i&<+        'Set register to 0, parse decimal integer into register.
+**2a&~/*a'&'&           'Pop the -1 (EOF) from stack, multiply register by 20.
                         'Add result of first line to register.
                         'Push 380 onto stack.
:;!?:-1<o'O'v!?=&:&      'Main loop, while top of stack is not 0.
                         'Subtract 1 from top of stack (loop counter)
                         'If current index is the playing piece index, print 'O'
{*?!v'*'o63.>:6%4=}:a4*+'x'%aa*) 
                         'If (index%6)=4 and (index+40)%120>100, print '*'
*2a:/  av?%              'If (index%20)=0, print newline
.37o<'.'<                'Otherwise, print '.'

1

জাভাস্ক্রিপ্ট, 138 বাইট

s=>[...t="...*.....*.....*..."].map((c,i)=>t.replace(/\*/g,c).replace(/./g,(c,j)=>x-j|19-i-s.slice(1)?c:'o'),x=parseInt(s[0],36)*.944-9|0)

স্ট্রিংগুলির একটি অ্যারে প্রদান করে। ব্যাখ্যা:

s=>[...                         Parameter
 t="...*.....*.....*..."        Pattern of lines 4, 10 and 16
].map((c,i)=>                   Loop 19 times
 t.replace(/\*/g,c)             Change the `*` to `.` on other lines
  .replace(/./g,(c,j)=>         Loop over each character
   x-j|19-i-s.slice(1)?c:'o'),  Change to o at the appropriate position
 x=parseInt(s[0],36)*.944-9|0)  Compute the column number from the letter

স্ট্রিংগুলির একটি অ্যারে কেবল প্রয়োজনীয় আউটপুটটির সাথে মেলে না join। এছাড়াও এটি ডি -5 (প্রথম পরীক্ষার কেস) এর জন্য ভুল সারিতে এবং ভুল কলামে ওকে রাখে।
Konijn

@ টমডেমুয়েট একটি অ্যারের স্ট্রিংকে ফেরতের মান হিসাবে অনুমোদিত। তবে এটি সম্ভব যে আমি আমার সারি এবং কলামগুলি মিশ্রিত করেছি, তাই আমি ডাবল-চেক করব।
নীল

হুম, সত্যিকারের স্ট্রিংগুলির অ্যারে
Konijn

1

আর, 169 161 বাইট

f=function(p){S=substr;N=rep(".",114);N[61+6*0:2]="*";M=matrix(N,19,19);M[(S(p,2,3):1)[1],which(LETTERS[-9]==S(p,1,1))]="O";for(i in 19:1)cat(M[i,],"\n",sep="")}

ইনডেন্ট এবং নিউলাইনগুলি সহ:

f=function(p){
    S=substr
    N=rep(".",114) # 6 lines of dots
    N[61+6*0:2]="*" # Place the hoshis
    M=matrix(N,19,19) # Make the 19x19 board using vector recycling
    M[(S(p,2,3):1)[1],  #grab and force coerce the row number to integer
      which(LETTERS[-9]==S(p,1,1))]="O" #Place the first stone
    for(i in 19:1) cat(M[i,],"\n",sep="")
}

ব্যবহার:

> f("A19")
O..................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
...................
...*.....*.....*...
...................
...................
...................
> f("D4")
...................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
...................
...O.....*.....*...
...................
...................
...................
> f("K10")
...................
...................
...................
...*.....*.....*...
...................
...................
...................
...................
...................
...*.....O.....*...
...................
...................
...................
...................
...................
...*.....*.....*...
...................
...................
...................

1

লুয়া, 187 বাইট

function g(i)i:gsub("(%a+)(%d+)",function(a,b)q=string.byte(a)-64 r=b+0 end)for x=1,19 do s=""for y=1,19 do s=s..(x+y*19==r+q*19 and"o"or(x-4)%6+(y-4)%6==0 and"*"or"-")end print(s)end end

এই বিশেষ প্রকল্পের জন্য আমি 187 সম্পর্কে খুব খারাপ বোধ করি না। লুয়া এখনও গল্ফিংয়ের জন্য খুব আড়ম্বরপূর্ণ হিসাবে প্রকাশ পেয়েছে, তবে আমি এর সাথে আরও কতটা যেতে পারি তা নিয়ে আমি বেশ গর্বিত।


1

পিএইচপি, 280 268 263 261 255 218 216 বাইট

<?php $a=ucfirst($argv[1]);$x=substr($a,0,1);$y=substr($a,1);$s=['DKQ',4,16,10];$i=85;while(64<$i--){$j=0;while($j++<20){echo($x==chr($i)&&$y==$j)?'O':((strpos($s[0],chr($i))>-1&&in_array($j,$s))?'*':'.');}echo"\n";}

আমার প্রথম গল্ফ

ব্যবহার:
পিএইচপি ফাইল হিসাবে সংরক্ষণ করুন এবং php filename.php coordinateউদাহরণস্বরূপ এটিকে কল করুনphp go.php k13

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