কোড-গল্ফ: লাইট বন্ধ!


15

সমস্ত সম্ভাব্যতা পাস করার জন্য সংক্ষিপ্ততম কোড

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

"এক্স" চালু হওয়া আলোর প্রতিনিধিত্ব করে। "O" এমন আলোগুলি উপস্থাপন করে যা বন্ধ করে দেওয়া হয়। "পি" চাপ দেওয়া সেই বর্গটিকে উপস্থাপন করে।

XOO          XOO      XOX      XOX      XXX
XOX          XOP  ->  XXO  ->  OPO  ->  XOX
OOX          OOX      POO      XXO      XOO

Intial Grid  Press 1  Press 2  Press 3  Ending Grid

যুক্তি হিসাবে বা স্ট্যান্ডার্ড ইনপুট হিসাবে পাস করা ফাইল থেকে ইনপুট নেওয়া যেতে পারে। ইনপুটের প্রথম লাইনে থাকতে হবে এক্স (1 <= এক্স <= 20), লাইট গ্রিড মাপ, যার অর্থ এক্স দ্বারা এক্স । দ্বিতীয় লাইনে y (0 <= y <= ( x * 3) 2 ) থাকবে, প্রাথমিকভাবে আলোকিত আলোগুলির সংখ্যা। পরবর্তী y টি লাইনে গ্রিডে আলোকিত আলোকসজ্জার সমন্বয়গুলি রয়েছে "সারি কলাম" বিন্যাসে। ইতিমধ্যে চালু হওয়া লাইটগুলি (আগে টোগল করা হয়েছে) আবার টগল করা উচিত। পরবর্তী লাইনে z টি থাকবে , টিপানো লাইটের সংখ্যা। চূড়ান্ত জেড "সারি কলাম" বিন্যাসে লাইনগুলিতে চাপানো লাইটের স্থানাঙ্ক থাকে they

কোনও ইনপুট ভুল হবে না। সমস্ত নম্বর গ্রিডের প্রদত্ত গণ্ডির মধ্যে থাকবে।

সমস্ত লাইট টগল করার পরে আউটপুটটি চূড়ান্ত গ্রিড হবে। এটি একটি এন বাই এন গ্রিড হওয়া উচিত । আলো থাকা প্রতিটি অঞ্চলের জন্য বড় হাতের অক্ষর "এক্স" ব্যবহার করা উচিত। যা বন্ধ রয়েছে এমন প্রতিটি অঞ্চলের জন্য বড় হাতের অক্ষর "O" ব্যবহার করা উচিত।

গ্রিড বন্ধ থাকা প্রভাবিত আলোগুলি উপেক্ষা করা উচিত। গ্রিডের প্রান্তে আলো টগল করা কেবল গ্রিডে থাকা আলোগুলিকেই প্রভাবিত করে।

পরীক্ষার কেস


ইনপুট

4
5
2 3
2 4
3 1
3 4
4 3
7
3 3
4 4
3 4
4 2
4 1
2 2
3 2

আউটপুট

OXOO
XOXO
XOXO
OXOO

ইনপুট

1
3
1 1
1 1
1 1
2
1 1
1 1

আউটপুট

X

উত্তর:


4

জে, 132

'x f'=:0 2{,i=:".;._2(1!:1)3
echo u:79+9*}:"1}."1}.}:2|+/(1:`[`]}&(0$~,~x+2))"0<"1(f{.2}.i),;([:<[,[:|:(2 4$0 0,,~1 _1)+])"1(3+f)}.i

সম্ভবত আরও অনেক গল্ফ করা যেতে পারে।

  • কনসোল কেবল, স্টিডিন-> স্টডআউট। লিনাক্সে j602 এ পরীক্ষিত।
  • দেওয়া উভয় পরীক্ষা পাস।
  • এক্স উপর বুদ্ধিমান উপরের সীমা ধরে (কোনও প্রসারিত নির্ভুলতা নেই)

আসল অবিকৃত সংস্করণ:

NB. Whole input as two column grid
i=:".;._2(1!:1)3 

NB. x is x, f is number of initial toggles
'x f'=:0 2{,i 

NB. z is 1..x
z =: >:i.x 

NB. Take a boxed pair of indices, generate 'cross' indices (boxed)
f2=:3 :'y,,<"1(>y)+"1>0 1;1 0;0 _1;_1 0' 

NB. List of initial toggles, individually boxed
init=: <"1 f {. 2 }. i

NB. List of Ps, individually boxed
toggle=: <"1 (3 + f) }. i

NB. Grid of 0s padded on all sides
g =:0$~(x+2),(x+2)

NB. For each initial toggle, make a grid with a 1 in that position. Sum each 'position'.
grid =: +/ (1:`[`]}&g)"0 init

NB. For each position in the cross (f2) of each press, make a grid with a 1 in that position.
NB. Sum each 'position', add to 'grid', take mod 2, and select inner rows/columns.
gfinal =: z {"1 z { 2|grid + +/ (1:`([:f2[)`]}&g)"0 toggle

NB. Translate 0/1 to O/X through ascii and print
echo u:79+9*gfinal

6

পাইথন, 209 203 199 টি অক্ষর

I=input
x=I()+1
s=0
C=lambda:eval(raw_input().replace(' ','*%d+'%x))
exec's^=1<<C();'*I()
exec's^=1+(7<<x)/2+(1<<x<<x)<<(C()-x);'*I()
R=range(1,x)
for r in R:print''.join('OX'[s>>r*x+c&1]for c in R)

লাইটগুলির স্থিতি একটি একক (বড়) পূর্ণসংখ্যার পরিবর্তনশীল s,। বিটমাস্ক সহ এক্সওআরএসগুলি লাইটগুলি টগল করতে ব্যবহৃত হয়। মোড়কে প্রতিরোধ করতে আমি প্রতি সারিতে অতিরিক্ত বিট রাখি।


একটি মাস্টারপিস! এখান থেকে অনেক কিছু শেখা যায়।
ওলেহ প্রাইপিন

execএকটি কীওয়ার্ড, কোনও বিল্টিন ফাংশন নয় (পাইথন ২.x এ), সুতরাং সেই অতিরিক্ত বন্ধনীগুলির কোনও প্রয়োজন নেই।
হলভাবো

5

রুবি 1.9, 167 টি অক্ষর

n=gets.to_i
y=z=[*[1]*n,0]*n
$<.map{|i|a,b=i.split.map &:to_i;b ?[*y&&[b>1&&-1,b<n&&1,a>1&&~n,a<n&&n+1],0].map{|f|f&&z[n*a+a-n-2+b+f]*=-1}:y=!y}
z.map{|a|putc"
OX"[a]}

সম্পাদনা:

  • (198 -> 191) কিছু অপ্রয়োজনীয় জিনিস সরানো হয়েছে
  • (191 -> 180) ইনপুট পার্স করার পদ্ধতিটি সরল করা হয়েছে
  • (180 -> 172) অপসারিত বন্ধনী সরানো, z[u]*=-1পরিবর্তে ব্যবহার করুন z[u]=-z[u], অব্যবহৃত ভেরিয়েবল সরান
  • (172 -> 169) কিছু সরলীকরণ
  • (169 -> 167) শর্তসাপেক্ষে সরলীকৃত

3

পার্ল, ১৩৯ টি চর

@s=1..<>;<>=~/ /,$f{$`,$'+0}=1for 1..<>;<>=~/ /,map$f{$`+$_*($_&1),$'+int$_/2}^=1,-2..2for 1..<>;$\=$/;for$x(@s){print map$f{$x,$_}?X:O,@s}

ব্যাখ্যা:

# Read size and generate an array of integers from 1 to the size.
# We’ll need to iterate over this array often, but otherwise we don’t need the size
@s = 1..<>;

# Read number of prelit lights
for (1..<>) {
    # Find the space; sets $` and $' to row and column, respectively
    <> =~ / /;
    # Set the relevant light; need +0 because $' includes the newline
    $f{$`, $'+0} = 1;
}

# Read number of light switchings
for (1..<>) {
    # As above
    <> =~ / /;
    # Some nice formulas that flip the 5 relevant lights,
    # including the ones “off the board”, but we don’t care about those
    map {
        $f{ $`+$_*($_&1), $'+int$_/2 } ^= 1
    }, (-2..2);
}

# Cause each subsequent print statement to print a newline after it
$\ = $/;

# For each row...
for $x (@s) {
    # Print X’s and O’s as required
    print map { $f{$x,$_} ? X : O }, @s;
}

2

এপিএল (71)

'OX'[1+⊃{⍵≠(⍳⍴⍵)∊(⊂⍺)+K,⌽¨K←(0 1)(0 0)(0 ¯1)}/({⎕}¨⍳⎕),⊂({⎕}¨⍳⎕)∊⍨⍳2/⎕]

আপনি কি এর জন্য একটি হেক্স্স ডাম্প সরবরাহ করতে পারেন?
কেভিন ব্রাউন

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