দাবাবোর্ডের সমস্ত সাদা বা কালো স্কোয়ার আউটপুট


29

ভূমিকা

দাবাবোর্ডটি দেখতে কেমন লাগে।

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

আপনি দেখতে পাচ্ছেন এটি a1একটি গা dark ় বর্গাকার। তবে b1এটি একটি হালকা বর্গক্ষেত্র

কাজটি

চ্যালেঞ্জটি হল, প্রদত্ত dark, lightবা both, সমস্ত অন্ধকার , হালকা বা বিভাজকের ( সমস্ত সাদা অংশ বা নতুন লাইনের মতো) সমস্ত স্কোয়ার আউটপুট । সমস্ত স্কোয়ারের ক্রমটি বিবেচনা করে না

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

Input: dark
Output: a1 a3 a5 a7 b2 b4 b6 b8 
        c1 c3 c5 c7 d2 d4 d6 d8 
        e1 e3 e5 e7 f2 f4 f6 f8 
        g1 g3 g5 g7 h2 h4 h6 h8

Input: light
Output: a2 a4 a6 a8 b1 b3 b5 b7 
        c2 c4 c6 c8 d1 d3 d5 d7 
        e2 e4 e6 e8 f1 f3 f5 f7 
        g2 g4 g6 g8 h1 h3 h5 h7

Input: both
Output: a1 a2 a3 a4 a5 a6 a7 a8
        b1 b2 b3 b4 b5 b6 b7 b8
        c1 c2 c3 c4 c5 c6 c7 c8
        d1 d2 d3 d4 d5 d6 d7 d8
        e1 e2 e3 e4 e5 e6 e7 e8
        f1 f2 f3 f4 f5 f6 f7 f8
        g1 g2 g3 g4 g5 g6 g7 g8
        h1 h2 h3 h4 h5 h6 h7 h8

দ্রষ্টব্য: আমি আউটপুটকে পূর্বনির্ধারিত করেছি তবে এটি প্রয়োজনীয় নয়

এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!


তো, এমন কিছু a2a4a6...ঠিক আছে?
কনর ও'ব্রায়েন

@ সিওবি'তে এটিতে একটি সাদা অংশ বা একটি নতুন লাইনের মতো একটি পৃথক থাকতে হবে, যাতে এটি অবৈধ।
আদনান

আমরা কি কোনও কাঁচা 2 ডি ম্যাট্রিক্স আউটপুট করতে পারি? অর্থাত[[a2,a4,a6,a8],[...]...]
কনর ও'ব্রায়েন

@ সিও'বাʀɪᴇɴ হ্যাঁ, এটি অনুমোদিত
আদনান

কি light, darkএবং bothআছে ইনপুট হতে Strings অথবা তারা কোনো ডাটা টাইপ মাধ্যমে প্রতিনিধিত্ব করা যেতে পারে?
WKS

উত্তর:


15

পাইথ, 22 21 বাইট

@ এসপি 3000 দ্বারা -1 বাইট

fn%Chz3%sCMT2sM*<G8S8

ফাংশনটির অধীনে %Chz3, darkহ্যাশগুলি 1, light0 এবং both2 তে হ্যাশ করা হয় আমরা যদি দাবা বর্গের অর্ডের যোগফলের সমতা গ্রহণ করি (যা, a1-> [97, 33]-> (97 + 33)%2= 0, অন্ধকার বর্গাকার 0 হয় এবং হালকা 1 হয় এটি আমাদেরকে অসমতা দ্বারা ফিল্টার করতে দেয়।

fn%Chz3%sCMT2sM*<G8S8      implicit: z=input
               *           Cartesian product of
                <G8          first 8 letters in G (alphabet)
                   S8        with [1,...,8] implicitly stringified
             sM*<G8S8      ['a1','a2,...,'a8','b1'...'h8']
f          T               Filter that by gives truthy result to lambda T:
        sCMT                   The sum of the ords of the chars in T,
       %    2                  modulo 2
 n                            does not equal
   Chz                          ord of the first char in z,
  %   3                         modulo 3
                            Implicitly print the list.

এখানে চেষ্টা করুন


21:fn%Chz3%sCMT2sM*<G8S8
Sp3000

@ Sp3000 ধন্যবাদ! আমি এটি ফিট করার জন্য 6 বাইট ব্যবহার করছি তা জেনে আমার আলাদা হ্যাশ চেষ্টা করা উচিত ছিল।
lirtosiast

13

বাশ + জিএনইউ ইউটিলিটিস, 74

printf %s\\n {a..h}{1..9}|sed -n "`sed '/[db]/a1~2p
/t/a2~2p
c/9/d'<<<$1`"

{a..h}{1..9}বাশ ধনুর্বন্ধনী সম্প্রসারণ যা 8x8 বোর্ডের জন্য সমস্ত স্থানাঙ্ক এবং আরও একটি অতিরিক্ত কলাম তৈরি করে 9। এটি গুরুত্বপূর্ণ কারণ এটি সারি দৈর্ঘ্যকে বিজোড় করে তোলে যা চেকবোর্ডের প্রভাবের অনুমতি দেয়।

printfকেবল প্রতিটি তুল্য ফরম্যাট প্রতি লাইনে একটি।

বিল্ট সেড এক্সপ্রেশনটি তখন সমস্ত x9স্থানাঙ্কগুলি মুছে ফেলে এবং তারপরে স্ক্রিপ্ট ইনপুট অনুসারে সমথ বা বিজোড় বা উভয় ইনপুট লাইন মুদ্রণ করে।


11

জাভাস্ক্রিপ্ট (স্পাইডারমনকি 30+), 90 85 83 82 বাইট

x=>[for(d of"12345678")for(c of"abcdefgh")if(x>'l'^parseInt(c+=d,19)%2|x<'d')c]+''

স্কোয়ারগুলির কমা দ্বারা পৃথক করা স্ট্রিংটি ফেরত দেয়। 99 বাইটের জন্য সামঞ্জস্যপূর্ণ সংস্করণ:

x=>([..."12345678"].map(d=>[..."abcdefgh"].map(c=>c+d).filter(s=>x>'l'^parseInt(s,19)%2|x<'d')))+''

সমস্ত 64 বর্গক্ষেত্রের নাম গণনা করে কাজ করে, তারপর তাদের হালকা বা গা dark় মডুলো 2 কিনা তা দেখার জন্য বেস 19-এ পার্স করে।


ভাল. এটি ES7
edc65

@ edc65 আহ, আমি মনে করতে পারি না। আমি এটি গ্রহণ করি আমার দ্বিতীয় সংস্করণটি "কেবল" ES6।
নিল

এখন ES6 ES7 কে হারাবে
edc65

@ edc65 আপনি বলছিলেন?
নিল

4
@ edc65 আমি মনে করি না আমরা কোনও ড্রতে রাজি হতে পারি?
নিল

10

জাভাস্ক্রিপ্ট (ES6), 82 87 98

বেনামের ফাংশন স্কোয়ারের পৃথক পৃথক স্ট্রিংটি ফিরিয়ে দেয়।

i=>eval("for(o='',v=190;v<322;)v++%19<8&&i<'d'|v&1^i>'l'?o+=v.toString(19)+' ':o")

পরীক্ষা

f=i=>eval("for(o='',v=190;v<322;)v++%19<8&&i<'d'|v&1^i>'l'?o+=v.toString(19)+' ':o")

// less golfed

q=i=>{
  // loop over the range of number a0 (base 19) to h8 (base 19)
  for(o='',v=190;v<322;) 
  {
    if (v++ %19 < 8) // increment and execute the line below only if second digit in 1..8
      if (i<'d'|v&1^i>'l') // even == light, odd == dark, take both if input is 'both'
        o+=v.toString(19)+' '
  }
  return o
}

document.write('<hr>Both<br>'+f('both'))
document.write('<hr>Light<br>'+f('light'))
document.write('<hr>Dark<br>'+f('dark'))


1
বাহ ... এতো পাগল! আমি ভাবছি যদি ES6 এর সাথে কোনও সংক্ষিপ্ততা পাওয়া সম্ভব ...
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশন হ্যাঁ এটি! আমার একটি 86 টি প্রস্তুত আছে, তবে আমি আরও ভাল কিছু করার চেষ্টা করছি (আমার চলন্ত - টার্গেট নীল 85 এর সাথে ... কোন
জাল নেই

7

ব্যাচ, 192 বাইট

@set s=a1 a3 a5 a7
@set t=b2 b4 b6 b8
@if not %1==light call:b
@set s=a2 a4 a6 a8
@set t=b1 b3 b5 b7
@if %1==dark exit/b
:b
@echo %s% %s:a=c% %s:a=e% %s:a=g% %t% %t:b=d% %t:b=f% %t:b=h%

4

পাইথ, 48 39 বাইট

K*<G8S8Jfq%xGhT2%seT2K?qhz\bK?qhz\lJ-KJ

এখানে চেষ্টা করুন!

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

ব্যাখ্যা

প্রথমে আমরা বোর্ডে সমস্ত স্কোয়ারের একটি তালিকা তৈরি করি এবং এটি নির্ধারণ করি Y। তারপরে আমরা এই তালিকাটি ফিল্টার করি যাতে কেবলমাত্র হালকা স্কোয়ারগুলি থাকে এবং এই তালিকাটি নির্ধারিত করে J। এর পরে আমরা ইনপুটটি মূল্যায়ন করি এবং মুদ্রণ:

  • Y যদি ইনপুট ছিল both
  • J যদি ইনপুট ছিল light
  • Y-J যদি ইনপুট ছিল dark

কোনও বর্গ হালকা কিনা তা নির্ধারণ করা নিম্নরূপ:

  • 1-8 থেকে একটি নম্বর (A-> 1, B-> 2) এর গৃহস্থালির কাজ মানচিত্র, ফলাফল 18জন্য a8, ইত্যাদি
  • এই দুটি সংখ্যা বিজোড় বা সমান ( x%2 == y%2)
  • যদি তারা হয় তবে বর্গ হালকা, অন্যথায় এটি অন্ধকার

K*<G8S8Jfq%xGhT2%seT2K?qhz\bK?qhz\lJ-KJ  # z=input

 *                                         # Cartesian product of
  <G8                                      # first 8 letters of the alphabet (a-h)
     S8                                    # 1-indexed range (1-8)
K                                          # K holds now all squares
       f             K                     # Filter K 
        q                                  # is equal
         %xGhT2                            # map [a-h] to a number [1-8] and take it modulo 2
               %seT2                       # Take modulo 2 from the row number
                      ?qhz\bK              # If input starts with 'b' print K
                             ?qhz\lJ       # If it starts with 'l' print J
                                    -KJ    # Otherwise print the difference of those 2

ওহ গীজ আমার থেকে লম্বা শট করে খাটো।
অ্যাডিসন ক্রম্প

4

পাইথন 2, 73 71 70 বাইট

lambda s:[chr(x/8+97)+`x%8+1`for x in range(64)if x+x/8&1^ord(s[0])%3]

প্রশ্নটির জন্য ফাংশনগুলি ঠিক আছে কিনা তা নিয়ে আমি এখনও কিছুটা বিভ্রান্ত হচ্ছি, যেহেতু চ্যালেঞ্জটি "বিভাজক" হিসাবে উল্লেখ করেছে, তবে যেহেতু অন্যান্য ফাংশন সাবমিশনগুলি আমি একই কাজ করেছি since

অনুরূপ Erwan এর উত্তর কিন্তু একটি সঙ্গে অনেক বিট আরো পাইথন 2-নেস।

(-২ বাইট @ এক্সনোরকে ধন্যবাদ)


LOL আমি এমনকি এর মধ্যে s=="dark"এবং s[0]=="d"আমার প্রতিরক্ষার জন্য আমার প্রথম s,*_=scmp
চেষ্টাটি

1
আমার মনে মত খাটো কিছু সেখানে উচিত ord(s[_])&_বা ord(s[_])/_
xnor

@ এক্সনর প্রকৃতপক্ষে, রয়েছে %:) ধন্যবাদ!
Sp3000

4

পিএইচপি, 132 126 120 108 106 বাইট

for($s=strtr($argv[1],bdl,210);$c<8;$c++)for($r=0;$r<8;)if((++$r+$c)%2==$s||$s>1)echo"abcdefgh"[$c]."$r ";

এটি কলস (0-7) এবং সারিগুলির মধ্যে (1-8) লুপ করে এবং উভয়ের যোগফল বিজোড় / সমান কিনা তা পরীক্ষা করে।

পিএইচপি 5.6.4 দিয়ে পরীক্ষিত, এটি চালান: php -d error_reporting=30709 -r '<CODE>' {dark|light|both}


1
পিপিসিজিতে আপনাকে স্বাগতম! এটি একটি ভাল উত্তর, তবে আপনি কোনও ব্যাখ্যা যুক্ত করলে আপনি আরও বেশি ভোট পাবেন।
lirtosiast

আমার মনে হয় আপনি প্রতিস্থাপন করতে পারেন $s==2সঙ্গে $s-1। যদি $ s = 2, এবং -1 হয় তবে এটি 1, যা সত্যবাদী এবং অবিরত থাকবে
মার্টিজন

এবং আমি মনে করি $c=0এটি হতে পারে $c, এটি একযোগে বিজ্ঞপ্তি দেবে, তবে কমপক্ষে অন্ধকারের জন্য এটি ঠিক কাজ করে
মার্টিজন

ধন্যবাদ, মার্টিজন! আমি এখনই -6 বাইট, ধনুর্বন্ধনী অপসারণ করতে ভুলে গেছি। এবং কেন জানি না, কিন্তু $s-1কাজ করে না, তবে এটি করা উচিত। এই দুর্দান্ত ধারণা জন্য ধন্যবাদ! আমি পরে এটি ডিবাগ করব।
হত্যাকারী

আমি এই সাইটে নতুন, কিন্তু ত্রুটি বার্তাগুলি অনির্ধারিত $cপরিবর্তনশীল কারণে ? এটি কিছুটা অদ্ভুত এবং অবৈধ মনে হচ্ছে। অথবা না?
হত্যাকারী

3

ভিটসি , 90 82 বাইট

'`'8\[1+8\:]Yy1-\?8\['1'v8\[vD1+vr?]vX]i'h'-)[88*\[Z?aO]]i'r'-)[?1m]1m
84*\[Z??aO]

প্রথম লাইনের ব্যাখ্যা:

'`'8\[1+8\:]Yy1-\?8\['1'v8\[vD1+vr?]vX]i'h'-)[88*\[Z?aO]]i'r'-)[?1m]i'g'-)[1m]
'`'                     Push ` to the stack. (this is 1 less than a in ASCII)
   8\[     ]            Do the stuff in brackets 8 times.
      1+                Add one on every recursion (this gets a, b, c, d...)
        8\:             Clone the stack 8 times. (This gets 8 of each a, b, c...)
Y                       Remove the current stack.
 y1-\?                  Go one stack to the left (I really need to builtin this)
8\[                 ]   Do the stuff in brackets 8 times.
   '1'                  Push character literal 1 to the stack.
      v                 Save it as a temporary variable.
       8\[       ]      Do the stuff in brackets 8 times.
          v             Push the temporary variable to the stack.
           D            Duplicate the top item of the stack.
            1+          Add one to it (this gives us 1, 2, 3, 4...)
              v         Capture the top item of the stack as a temporary variable.
               r        Reverse the stack.
                ?       Go a stack to the right.
                  vX    Clear the temporary variable slot.
i'h')[          ]       If the last character of the input is 'h', do the stuff in brackets
      88*\[    ]        Do the stuff in brackets 64 times.
           Z            Output everything in the stack as a character.
            ?           Rotate right a stack.
             aO         Output a newline.
i'r')[?1m]              If the penultimate character of the input is 'r', rotate over a 
                        stack, then execute the first index of lines of code.
1m                      Execute the first index of lines of code.

দ্বিতীয় লাইনের ব্যাখ্যা:

84*\[Z??aO]
84*\[     ]   Do the stuff in brackets 32 times.
     Z        Output everything in the stack as a char.
      ??      Rotate two stacks over.
        aO    Output a newline.

'অন্ধকার' এবং 'দু'জনের জন্যই বোনাস ট্রেলিং নিউলাইনগুলি থাকবে। প্রয়োজনীয় যে কেবল 'অন্ধকার', 'উভয়' বা 'হালকা' ইনপুট হবে।

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


3

পাওয়ারশেল ভি 3 +, 142 129 বাইট

param($a)$d=$a[0]-in('d','b');$l=$a[0]-in('l','b')
97..104|%{$i=[char]$_;1..8|%{if((($q=($_+$i)%2)-eq$l)-or($q+1-eq$d)){"$i$_"}}}

ইনপুট গ্রহণ করে $aএবং যদি আমরা ইনপুটটির প্রথম বর্ণের উপর ভিত্তি করে সিন্দু $dবা $light স্কোয়ার আউটপুট আছি তবে দুটি ভেরিয়েবল সেট করে।

তারপরে, আমরা লুপ করেছি a-hএবং এটি কোনও হালকা বা গা dark় বর্গক্ষেত্র ( প্রথম পরীক্ষায় সহায়ক ভেরিয়েবল নির্ধারণ করা ) কিনা তা পার্স করার জন্য দাবা স্কয়ারের রঙ নির্ধারণের1-8 জন্য একই কৌশলটি ব্যবহার করি এবং উপযুক্ত হলে সেই বর্গটি পাইপলাইনে যুক্ত করব। কার্যকর করার পরে, পাইপলাইনে থাকা উপাদানগুলি প্রতি লাইনে আউটপুট এক হয়।$q

-inঅপারেটরের জন্য ভি 3 বা নতুন প্রয়োজন ।

সম্পাদনা করুন - switchএবং সমতা পরীক্ষার ক্রম পরিবর্তন করে 13 বাইট সংরক্ষণ করা হয়েছে


3

জल्फ, 48 বাইট

Ζ-ώ~1tΜ fΜZAQ8ΨΖ+ζ|<%ζγwώt8ώ6d|<i'd!x%H2>i'ldbHγ

এটি আমার কাছে সমস্ত গ্রীক ¯ \ _ (ツ) _ / ¯ এটি এডসি 65 এর উত্তরের উত্তোলন।

Ζ-ώ~1t
Ζ        set ζ to 
  ώ~1     100 * 2
 -   t    minus 10 (=190)

ΜZAQ8ΨΖ+ζ|<%ζγwώt8+2t
 ZAQ8                 A zero array of length Q8 (8*8 = 64)
Μ    Ψ                map that
      Ζ+ζ             ζ += 
           %ζγwώt       ζ % (γ = 19)
          <      8      < 8
         |        ώ6  || 12

Μ f■above thing■d|<i'd!x%H2>i'ldbHγ
 _f■above thing■d                    filter the above thing
                 |<i'd!x%H2>i'l      removing all the bad stuff (i<'d'|v%2^i>'l')
Μ                              dbHγ  map each character to base 19

3

পার্ল, 69 + 3 = 72 বাইট

$b=/b/;$i=/l/;$_="@{[grep{$i=!$i||$b}map{$l=$_;map{$l.$_}1..8}a..h]}"

চালানো যায় perl -p, যার জন্য আমি 3 বাইট যুক্ত করেছি।

কম-গল্ফযুক্ত সংস্করণ (কিছুটা আলাদা, কারণ বেবিকার্ট অপারেটরটি সুন্দরভাবে ফর্ম্যাট করা শক্ত করে তোলে):

$b=/b/;                       # flag for input containing b
$i=/l/;                       # start $i as true if input contains 'l'

@a = grep {
    $i = !$i||$b                # alternate unless $b is true
} map {
    $l = $_;                    # save letter
    map {
        $l.$_                   # join letter and number
    } 1..8                      # generate number sequence
} a..h;                         # generate letter sequence

# golfed version uses babycart operator around array expr to save one byte
$_ = "@a"                       # write array, separated

গল্ফযুক্ত সংস্করণ ব্যবহার করে "@{[]}"; মন্তব্য করা সংস্করণটি @a=...; "@"এমনভাবে ব্যবহার করে যাতে মন্তব্য করা কোডটি এখনও চালানো যায়।


map$l.$_,1..8-1
চোরোবা

এবং grep$i=!$i||$b,map
গ্রেপের

3

সি ++, 132 বাইট

কমান্ড-লাইনে ইনপুট নেয়। মুদ্রণের শর্তের জন্য পয়েন্টার / মডুলো ভুডু ব্যবহার করে।

#include<stdio.h>
int main(int i,char**v){for(int n=0;n<64;n++)if((n+(i=n/8))%2-*v[1]%3){putchar(i+97);putchar(n%8+49);putchar(32);}}

আমি মনে করি না যে nলুপটি প্রয়োজনীয়। আমার মনে হয় এর জন্য লুপগুলি নেস্ট করা হয়েছে iএবং jকয়েক বাইট বন্ধ ছাঁটাই করবে। (i+j)%2পদ্ধতির সত্যিই চালাক। আমি এটা ভাবিনি।
WKS

আমি কেবল লক্ষ্য করেছি যে (i//8+i%8)%2এটি একইরকম (i//8+i)%2তাই আপনি কিছু বাইট জিততে পারেন যদি আপনি এর সংজ্ঞাটি সরিয়ে থাকেনj=n%8
এরওয়ান

3

জাভা, 143

class H{public static void main(String[]a){for(char
c=96;++c<'i';)for(int
i=0;++i<9;)if((i+c)%2!=a[0].charAt(0)%3)System.out.println(c+""+i);}}

আরে, এটি সবচেয়ে দীর্ঘ উত্তর নয় :)

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেওয়া হয়।


3

পিএইচপি, 99 82 79 76 74 73 বাইট

আইএসও 8859-1 এনকোডিং ব্যবহার করে।

for($z=$argv[1];++$x<72;)$x%9&&$z<c|$z>k^$x&1&&print~ß.chr($x/9+97).$x%9;

এটি চালান ( -dকেবল নান্দনিকতার জন্য যুক্ত):

php -d error_reporting=30709 -r 'for($z=$argv[1];++$x<72;)$x%9&&$z<c|$z>k^$x&1&&print~ß.chr($x/9+97).$x%9; echo"\n";' dark

এটি এটির মতো কাজ করে: ভেরিয়েবল $x1 থেকে 71 থেকে বর্ধিত হয়, সংখ্যাগুলি নীচের চিত্রের সাথে মিল রয়েছে।

r\c 1  2  3  4  5  6  7  8  [invalid column]
A   1  2  3  4  5  6  7  8  9
B  10 11 12 13 14 15 16 17 18
C  19 20 21 22 23 24 25 26 27
D  28 29 30 31 32 33 34 35 36
E  37 38 39 40 41 42 43 44 45
F  46 47 48 49 50 51 52 53 54
G  55 56 57 58 59 60 61 62 63
H  64 65 66 67 68 69 70 71 72

সুতরাং, $x modulo 9কলাম নম্বরটি দেয় এবং $x / 9সারি নম্বর দেয়, যা আমি ব্যবহার করে একটি অক্ষরে রূপান্তর করি chr। কোড $z<c|$z>k^$x&1উৎপাদনের trueইনপুট জন্য both( $z<c) এবং ক্ষেত্রে lightবা darkযথাক্রমে শুধুমাত্র জোড় না বিজোড় কোষ জন্য ( $z>k ^ $x&1)। এই অভিব্যক্তির ফলাফল নির্ধারণ করে যে কক্ষ স্থানাঙ্কগুলি তখন মুদ্রিত হবে। অবশেষে, $x modulo 9ফলাফল যদি আসে তবে 0আমি সেই অ অযৌক্তিক কক্ষটি এড়িয়ে চলেছি।

  • সংরক্ষিত 18 শুধুমাত্র 1 লুপ থাকার, অন্যান্য উপায় কাছাকাছি পরিবর্তে একটি গৃহস্থালির কাজ নম্বর রূপান্তর 17 বাইট (একটি বাগ সংশোধন করা হয়েছে)
  • একটি দিয়ে অন্ধকার এবং আলোর শর্তটি একত্রিত করে 3 বাইট সংরক্ষণ করা xor
  • প্রথম চরের পরিবর্তে সম্পূর্ণ ইনপুটটির সাথে তুলনা করে 3 বাইট সংরক্ষণ করা হয়েছে
  • 2 বাইট সংরক্ষণ করা হয়েছে কারণ একটি চরে রূপান্তরিত করার আগে সঠিক সারি নম্বর পেতে .125এক্সপ্রেশনটিতে আর বিয়োগ $x/9+69.9করতে হবে না
  • একটি জায়গা উত্পাদন করার জন্য একটি বাইট সংরক্ষণ করা

2

জাভাস্ক্রিপ্ট ES6, 187 160 159 বাইট

আমি সম্ভবত বেদনাদায়ক স্পষ্ট কিছু মিস করছি। আচ্ছা ভালো. অ্যারে সমতল করতে না সাহায্য করে।

l=s=>(E=[2,4,6,8],O=[1,3,5,7],h=(z=s[0]=="d")?O:E,d=z?E:O,[...h.map(t=>[..."aceg"].map(e=>e+t)),...(d.map(t=>[..."bdfh"].map(e=>e+t))),...(s[0]=="b"?l`d`:[])])

একটি 2D অ্যারে প্রদান করে।


এটি এখানে চেষ্টা করুন:


2

রুবি, 85

আমি মনে করি এটি সম্পর্কে আরও ছোট উপায় আছে তবে এটি একটি সুন্দর ব্যবহার .upto

gets;'a1'.upto('h8'){|e|puts e if e[/[1-8]/]&&(~/b/||((e.ord%2!=e[1].ord%2)^! ~/l/))}

2

আর, 129 94 বাইট

আমি জানতাম আমি আরও ভাল উত্পাদন করতে পারি :)। মূলত এটি একটি উল্টানো বোর্ড তৈরি করে, গ্রিড রেফারেন্সগুলি ফিল্টার করে যেখানে ছায়াটি ইনপুটটির সাথে মেলে না। আউটপুট স্থান পৃথক করা হয়।

a=which(array(c('light','dark'),c(9,9))[-9,-9]!=scan(,''),T);cat(paste0(letters[a[,1]],a[,2]))

Ungolfed

a=which(                           # Get the indexes of
  array(c('light','dark'),c(9,9))  # an array of light dark
    [-9,-9]                        # except for the ninth row and column
      !=scan(,'')                  # where the value doesn't equal the input
    ,T                             # return array index not vector
  );
cat(paste0(letters[a[,1]],a[,2]))  # using letters for col

পরীক্ষা

> a=which(array(c('light','dark'),c(9,9))[-9,-9]!=scan(,''),T);cat(paste0(letters[a[,1]],a[,2]))
1: dark
2: 
Read 1 item
a1 c1 e1 g1 b2 d2 f2 h2 a3 c3 e3 g3 b4 d4 f4 h4 a5 c5 e5 g5 b6 d6 f6 h6 a7 c7 e7 g7 b8 d8 f8 h8
> a=which(array(c('light','dark'),c(9,9))[-9,-9]!=scan(,''),T);cat(paste0(letters[a[,1]],a[,2]))
1: light
2: 
Read 1 item
b1 d1 f1 h1 a2 c2 e2 g2 b3 d3 f3 h3 a4 c4 e4 g4 b5 d5 f5 h5 a6 c6 e6 g6 b7 d7 f7 h7 a8 c8 e8 g8
> a=which(array(c('light','dark'),c(9,9))[-9,-9]!=scan(,''),T);cat(paste0(letters[a[,1]],a[,2]))
1: both
2: 
Read 1 item
a1 b1 c1 d1 e1 f1 g1 h1 a2 b2 c2 d2 e2 f2 g2 h2 a3 b3 c3 d3 e3 f3 g3 h3 a4 b4 c4 d4 e4 f4 g4 h4 a5 b5 c5 d5 e5 f5 g5 h5 a6 b6 c6 d6 e6 f6 g6 h6 a7 b7 c7 d7 e7 f7 g7 h7 a8 b8 c8 d8 e8 f8 g8 h8
>

2

ওরাকল এসকিউএল 11.2, 192 180 বাইট

SELECT CHR(64+x),DECODE(y,0,8,y)FROM(SELECT CEIL(LEVEL/8)x,MOD(LEVEL,8)y FROM DUAL CONNECT BY LEVEL<=64)WHERE(:1='dark'AND MOD(x+y,2)=0)OR(:1='light'AND MOD(x+y,2)=1)OR(:1='both');

আন golfed

WITH v AS
(
  SELECT CEIL(LEVEL/8)x, DECODE(MOD(LEVEL,8),0,8,MOD(LEVEL,8))y  
  FROM DUAL CONNECT BY LEVEL<=64
)
SELECT CHR(64+x),y
FROM   v
WHERE  (:1='dark' AND MOD(x+y,2)=0)OR(:1='light' AND MOD(x+y,2)=1)OR(:1='both');

ভি ভিউ প্রতিটি বর্গের স্থানাঙ্ক তৈরি করে। স্থানাঙ্কগুলির যোগফল যদি সমান হয় তবে বর্গক্ষেত্র কালো, অন্যথায় এটি সাদা।


2

মরিচা, 263 259 244 বাইট

use std::char;use std::env;fn main(){let n=env::args().nth(1).unwrap();for i in 0..8{for j in 0..8{if n=="both"||(n=="dark"&&(i+j)%2==0)||(n== "light"&&(i+j)%2!=0){println!("{}{}",char::from_u32(i+97).unwrap(),char::from_u32(j+49).unwrap())}}}}

প্রসারিত ফর্ম:

fn main() {
    let input = env::args().nth(1).unwrap();
    for i in 0..8{
            for j in 0..8{
                if input == "both"
                || (input == "dark" && (i+j)%2==0)
                || (input == "light" && (i+j)%2!=0){
                    println!("{}{}",char::from_u32(i+97).unwrap(),char::from_u32(j+49).unwrap());
            }
        }
    }
}

1
আপনার ইনপুটটিকে হার্ড-কোডিংয়ের পরিবর্তে, এটি টার্মিনাল বা কমান্ড লাইন থেকে বা কোনও ফাংশন প্যারামিটার হিসাবে পড়া সম্ভব নয়?
নিল

2

এইটিকে সঠিক স্কোয়ারগুলি দেবে বলে মনে হচ্ছে না। "অন্ধকার" প্রতিটি বর্ণের জন্য x1, x3, x5, x7 দিচ্ছে, তবে এটি 4 টি কলামের সাথে সম্পর্কিত, কালো স্কোয়ার নয়।
অনুমানকারী 14

@ এস্টিমেটার দুঃখিত, আমার ভুল সংশোধন করা হয়েছে
লুইস মেন্ডো

2

সিজেম, ২৯

qci3%:X;8Ym*{~+2%X-},"a1 "f.+

কেবলমাত্র একটি দ্রুত এবং নোংরা সমাধান: p
এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

q           read the input
ci          convert to (first) character then to integer
3%          modulo 3; results for d(ark), l(ight) and b(oth) are 1, 0, 2
:X;         store in X and pop
8Ym*        generate all pairs (Y=2) of numbers from 0 to 7
{…},        filter using the condition block
  ~         dump the current pair on the stack
  +2%       calculate the sum modulo 2
  X-        subtract X; if the result is not 0, the pair is kept
"a1 "f.+    vectorized-add "a1 " to each remaining pair
             this means the character 'a' is added to the first number,
             the character '1' is added to the second number,
             and then the space character is appended
            the contents of the stack are automatically printed at the end

2

হাস্কেল, 133 116 105 100 98 91 বাইট

f r=[["abcdefgh"!!x,"12345678"!!y]|x<-l,y<-l,odd(x+y)||r<"l",even(x+y)||r!!0/='d']
l=[0..7]

হাস্কেলকে গল্ফ করাতে এটি আমার প্রথম প্রচেষ্টা।

মাইকেল ক্লেইনের কিছু সহায়তায়, আমরা এটিকে 100 টি অক্ষরের অধীনে আনতে পেরেছি!


1
কেমন c>0জন্য c==1এবং c<1জন্য c==0? দুটি বাইট সংরক্ষণ করুন।
মাইকেল ক্লিন

কল্পনাপ্রসূত, আমরা এটি 100 এর নিচে পেয়েছি! মাইকেল আপনাকে ধন্যবাদ।
জোয়েটউইডল

1
আপনাকে স্বাগতম. আমি কিছুটা চুষতে পেরেছিলাম এবং কিছুটা রিফ্যাক্ট করে 86 86 বাইটে নামিয়েছিলাম:f r=[[[a,b]|a<-['a'..'h'],b<-['1'..'8']]!!i|i<-[0..63],even i||r<"l",odd i||r!!0/='d']
মাইকেল ক্লেইন

1
এটি খুব সুন্দর, একটি পুনর্বিবেচনা পদ্ধতির। যদিও আমি এই বলার জন্য দুঃখিত এবং এমনকি iআমাদেরকে তির্যক স্ট্রিপ দেয় না। কিছু i+i`div`8(যেমন x+y) দিয়ে এটি সমাধান করে । অন্যরা শুরু করে ['1'..'9']এবং [0..71]তারপরে কেবল i`mod`9<8ফলাফলগুলি ধরে রাখে , 96 বাইটের জন্য। তবে আমাদের দুটি পদ্ধতির এই হাইব্রিডটি 91 বাইটে ভালভাবে কাজ করে:l=[0..7];f r=[["abcdefgh"!!x,"12345678"!!y]|x<-l,y<-l,odd(x+y)||r<"l",even(x+y)||r!!0/='d']
জোয়েটউইডল

আহ্, ভাল এটি এখনও আরও ভাল
মাইকেল ক্লেইন

1

গণিত 133 বাইট

পদ্ধতি 1 : 108 বাইট। এটি প্রতিটি কক্ষে লেবেল সহ বোর্ডকে একটি টেবিল হিসাবে তৈরি করে এবং প্রয়োজনীয় হিসাবে হালকা বা গা dark় তির্যক বা ব্যান্ডগুলি দেয়।

Table[Table[{i,j},{i,{h,g,f,e,d,c,b,a}},{j,Range@8}]~Diagonal~k,{k,If[#=="light",-6,-7],7,If[#=="both",1,2]}]&

%["light"]   (*where % repeats the preceding line *)

{{{বি, 1}, {এ, 2}}, {{ডি, 1}, {সি, 2}, {বি, 3}, {এ, 4}}, {{এফ, 1}, {ই , 2}, {d, 3}, {সি, 4}, {বি, 5}, {এ, 6}}, {{এইচ, 1}, {জি, 2}, {চ, 3}, {ই , 4}, {ডি, 5}, {সি, 6}, {বি, 7}, {এ, 8}}, {{এইচ, 3}, {জি, 4}, {চ, 5}, {ই , 6}, {d, 7}, {সি, 8}}, {{এইচ, 5}, {জি, 6}, {চ, 7}, {ই, 8}}, {{এইচ, 7}, {জি, 8}}


পদ্ধতি 2 : 133 বাইট। একটি অ্যারে তৈরি করে এবং প্রতিটি ঘরের সারি সংখ্যা + কলাম সংখ্যার যোগফলের সম-বিজোড় প্রকৃতি অনুযায়ী নির্বাচন করে।

Position[Array[Boole@OddQ[#+#2] &,{8,8}],Switch[#,"dark",0,"light",1,"both",0|1]]/.
{j_,k_}:>{j/.Thread[Range@8->{a,b,c,d,e,f,g,h}],k}&


1

জেএস, 197 বাইট

b=[];d=[];l=[];for(i=1;i<9;i++){for(j=1;j<9;j++){a=String.fromCharCode(96+i*1)+j;b.push(a);if((i+j)%2<1){d.push(a)}else{l.push(a)}}}m=[0,"both",b,"dark",d,"light",l];alert(m[m.indexOf(prompt())+1])

1

পাইথন (3.5), 106 100 96 92 বাইট

(i+j)%26 বাইট জিততে মেগাটমের কৌশলটি ব্যবহার করুন

f=lambda s:[chr(97+i//8)+str(1+i%8)for i in range(64)if s[0]=='b'or(i//8+i)%2==(s[0]=='l')]

Repl.it এ চেষ্টা করুন

ফলাফল

>>> f('light')
['a2', 'a4', 'a6', 'a8', 'b1', 'b3', 'b5', 'b7', 'c2', 'c4', 'c6', 'c8', 'd1', 'd3', 'd5', 'd7', 'e2', 'e4', 'e6', 'e8', 'f1', 'f3', 'f5', 'f7', 'g2', 'g4', 'g6', 'g8', 'h1', 'h3', 'h5', 'h7']
>>> f('dark')
['a1', 'a3', 'a5', 'a7', 'b2', 'b4', 'b6', 'b8', 'c1', 'c3', 'c5', 'c7', 'd2', 'd4', 'd6', 'd8', 'e1', 'e3', 'e5', 'e7', 'f2', 'f4', 'f6', 'f8', 'g1', 'g3', 'g5', 'g7', 'h2', 'h4', 'h6', 'h8']
>>> f('both')
['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'g1', 'g2', 'g3', 'g4', 'g5', 'g6', 'g7', 'g8', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8']

পূর্ববর্তী সংস্করণ

f=lambda s:[i for i in[i+j for i in'abcdefgh'for j in'123456780'][s[0]=='l'::2-(s[0]=='b')]if'0'not in i]


0

সি (জিসিসি) , 112 বাইট

f(char*s){for(int m=*s^'d'?*s^'l'?3:2:1,l=64,x;l--;m&1&!x|(m&2&&x)&&printf("%c%d ",l%8+97,l/8+1))x=l%8%2^l/8%2;}

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

যদি একটি == 1 হয়, তবে সারি এবং কলামের "বিজোড়তা" একই হলে উভয়ই বিজোড় বা উভয়ই সমান হলে একটি বর্গক্ষেত্র সর্বদা কালো হবে be বিপরীতটি সাদা স্কোয়ারগুলির ক্ষেত্রে সত্য, যেখানে সারি এবং কলাম সর্বদা বিজোড়তায় পৃথক হবে।

এর পরে, এটি সারি এবং কলামের লুপগুলি একত্রিত করার পাশাপাশি অপারেটর অগ্রাধিকারের একটি সারণীর সাথে পরামর্শ করার মতো পর্যাপ্ত পরিমাণে বোধগম্যতা না পাওয়া পর্যন্ত।

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