ব্লক পুনরায় সাজানো


14

সুতরাং আপনার কাজটি এমন একটি 3x3 ব্লক নেওয়া যেখানে -বোঝা যাচ্ছে ফাঁকা জায়গা এবং *এর অর্থ ভরাট স্থান, উদাহরণস্বরূপ:

-**
-*-
*-*

এবং ব্লকটি পুনরায় সাজিয়ে রাখুন যাতে এটির *মতো এক্স তৈরি হয়:

*-*
-*-
*-*

ইনপুট: 3x3 স্কোয়ার উপরের মতো, সেগুলি 3 লাইন, একটি অ্যারে বা আপনি চাইলেও হতে পারে।

আউটপুট: এক্সে পুনরায় সাজানোর জন্য সংক্ষিপ্ত পরিমাণে চাল। যদি এটি সম্ভব না হয় তবে কোনও অসম্ভব আউটপুট ফিরিয়ে দিন, উদাহরণস্বরূপ 999বা -42425এই জাতীয় সংখ্যা সবচেয়ে ছোট।

পরীক্ষার কেস:

1) আউটপুট: 1

-**
-*-
*-*

2) আউটপুট: -1

-*-
-*-
*-*

3) আউটপুট: 3

---
-**
***

4) আউটপুট: 0

*-*
-*-
*-*

আপনি ফাঁকা এবং ফাঁকা অক্ষরগুলি প্রতিস্থাপন করতে পারেন তবে আপনার পোস্টে কোনটি অন্তর্ভুক্ত করবেন তা নিশ্চিত হন

কোড গল্ফ

মনে রাখবেন এটি সংক্ষিপ্ততম কোডের জয় কোড গল্ফ!


1
২ টি অক্ষর উল্টিয়ে আপনি কি স্থান থেকে উল্টো দিকে উল্টাতে চেয়েছিলেন *বা তাদের বিনিময় করেছেন?
ব্যবহারকারী 202729

পাঁচজনের বেশি হলে কী হবে *? আপনি আরও কিছু পরীক্ষার মামলা যুক্ত করতে পারেন?
স্টিভি গ্রিফিন

@ ব্যবহারকারী 202729 উদাহরণস্বরূপ abc acb হবে যদি আপনি শেষ 2 টি অক্ষর উল্টান।
নোহ ক্রিস্টিনো

@ স্টেভিগ্রিফিন "যদি এটি সম্ভব না হয় তবে a -1" 5 এরও বেশি *বা 5 এরও কম প্রত্যাখ্যান করা অসম্ভব করে তোলে।
নোহ ক্রিস্টিনো

6
আমরা কি অন্য কিছু ব্যবহার করতে পারি -1? উদাহরণস্বরূপ 5(অন্যথায় অসম্ভব), বা একটি ত্রুটি নিক্ষিপ্ত?
জোনাথন অ্যালান

উত্তর:


12

পাইথন 3 , 104 78 বাইট

lambda n:-(sum(n)!=5)or sum(n[1::2])+n[4]*(max(n,n[6:],n[::3],n[2::3])>=[1]*3)

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

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

ইনপুট একটি হল স্ট্রিং শূণ্যসমূহ এবং বেশী, বেশী হচ্ছে দৈর্ঘ্য 9 তালিকা *গুলি।

এখানে কিছু পর্যবেক্ষণ রয়েছে:

  • আমাদের ইতিমধ্যে তারকাদের সঠিক কোষে সরানোর দরকার নেই। যে কোনও ভুল জায়গায় থাকা তারার চারপাশে 5 টি ঘর রয়েছে যা একবারে অবরুদ্ধ করা যায় না (অন্যথায় উত্তরটি ইতিমধ্যে -1)।
  • প্রতিটি প্রতিস্থাপিত নক্ষত্রের জন্য হয় মূল্য 1 বা 2 হয় এবং তিনটি সঠিকভাবে স্থাপন করা তারা দ্বারা ঘিরে থাকলে এটি কেবল 2।
  • প্রতিটি বিভ্রান্ত নক্ষত্রের জন্য দাম একে অপরের থেকে স্বতন্ত্র।

সুতরাং, আমরা প্রথমে পরীক্ষা করে দেখি যে স্ট্রিংটিতে পাঁচটি রয়েছে এবং তারপরে এই জিনিসগুলি গণনা করুন:

  • ভুল জায়গায় বসানো তারার সংখ্যা (= বিজোড় সূচকগুলিতে)
  • খরচ 2 misplaced নক্ষত্রের সংখ্যা (= এ কোষ 0124, 0346, 2458, 4678সব বেশী হচ্ছে)
    • n[4]একের বাইরে থাকার কারখানা এবং তারপরে প্রতিটি ব্যাপ্তির নিষ্কাশন পরীক্ষা করা '111'
    • যেহেতু এই জাতীয় তারকা সর্বাধিক একজন, আমরা maxপরিবর্তে নিরাপদে ব্যবহার করতে পারি sum

একটি তালিকা গ্রহণ একটি স্ট্রিং পরিবর্তে (প্রতিস্থাপন 17 বাইট সংরক্ষণ countসঙ্গে গুলি sums এবং '111'সঙ্গে [1]*3) Tio (আমি একটি সঙ্গে চালাক হতে চেষ্টা করে থাকেন n[i::j]>=[1]*3লুপ কিন্তু ছোট খুঁজে পেলাম না)।
জোনাথন অ্যালান

যেহেতু কেবলমাত্র একটি ব্যয় -2 তারা থাকতে পারে তাই দেখে মনে হচ্ছে আপনি করতে পারেন max(n,n[6:],n[::3],n[2::3])>='1'*3
xnor

অন্যান্য ব্যবস্থা আছে যেগুলির জন্য ব্যয় -2 তারা রয়েছে। আমি মনে করি [0,1,1,1,1,0,1,0,0] 2 এর পরিবর্তে 3 ফিরতে হবে
রুটটো

এছাড়াও, [1,1,1,1,0,0,1,0,0] ২ এর পরিবর্তে 3 হওয়া উচিত
রুটটো

এছাড়াও, [1,1,1,1,0,0,1,0,0] ২ এর পরিবর্তে 3 হওয়া উচিত
রুটটো

4

জেলি , 26 বাইট

5ḶḤd3ạŒ!Ṁ€€ḅ1Ṃ
T’d3Ç-L=5Ɗ?

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


ইনপুট হিসাবে একটি সমতল তালিকা নিন।

খুব খারাপ যে জেলির কাছে "বহুমাত্রিক সত্যবাদী সূচকগুলি" নেই ... T€ṭ€"JẎএটিও কাজ করে তবে আরও 1 বাইট নেয়।


অ্যালগরিদম: 5 টি বর্তমান ব্লক অবস্থান এবং 5 টি লক্ষ্য (গন্তব্য) রয়েছে, অ্যালগরিদম 5 টির প্রত্যেকটির চেষ্টা করে! মিল, এবং সর্বনিম্ন যোগফল [উত্স, গন্তব্য] চেবিশেভ দূরত্বের আউটপুট।


আপনি একটি সমতল তালিকা নিতে পারেন ("তবে আপনি চান") ... সম্ভবত আপনি 0-ভিত্তিক সূচকগুলি নিতে পারেন এবং 24 টি রাখতে পারেন?
জোনাথন অ্যালান

4

হাস্কেল , 176 132 126 104 বাইট

w=0:1:w
m a|sum a/=5=5|1>0=sum$[a!!4|3<-sum.map(a!!)<$>[[0,1,2],[0,3,6],[2,5,8],[6,7,8]]]++zipWith(*)a w

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


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


2
কিছু টিপস: lengthপরীক্ষাটি ছোট করা যেতে পারে sum[1|1<-a]। ফাংশন এতে s: (1-e,n+sum[1|b>e])যা আপনি অন্য বাইট সংরক্ষণ করতে ইনলাইন করতে পারেন। আপনি ব্যবহার করতে পারেন otherwiseপাহারা মধ্যে mজোড়া সংরক্ষণের জন্য ()। অবশেষে, &&প্রহরীতে শীর্ষ স্তরের দ্বারা প্রতিস্থাপন করা যেতে পারে ,। ...
নিমি

2
আপনি sumবুলিয়ান ইন্টিতে কাস্ট করতে তালিকার বোঝাপড়ার উপর একটি ব্যবহার করে অন্য বাইট সংরক্ষণ করতে পারেন । এটি অনলাইন চেষ্টা করুন!
পোস্ট রক গারফ হান্টার

2
আসলে আপনি বেশ কয়েকটি বাইট সংরক্ষণ করতে পারেন কারণ প্যাটার্ন গার্ডগুলি একবার চলে গেলে আপনি কেবল পুরো জিনিসটি উপরে স্থানান্তর করতে পারেন mএটি অনলাইন চেষ্টা করুন!
পোস্ট রক গারফ হান্টার

2
এছাড়াও যেহেতু প্রতিটি অ -1 উপাদান aঅবশ্যই 0আপনার sum aপরিবর্তে ব্যবহার করতে পারবেন না sum[1|1<-a]? এটি অনলাইন চেষ্টা করুন!
পোস্ট রক গারফ হান্টার

1
আমি ঠিক বুঝতে পেরেছি যেহেতু 1কেন্দ্র না থাকলে সমস্তের সাথে 1 টির বেশি পক্ষ থাকতে পারে না 0, আপনি 3<-পরিবর্তে এটি করতে পারেন elem 3$। এছাড়াও আপনি sum.map(a!!)পরিবর্তে ব্যবহার করতে পারেন sum<$>map(a!!)
পোস্ট রক গারফ হান্টার

3

পাইথন 2 , 194 192 বাইট

from itertools import*
f=lambda l,k=0:-(sum(l)!=5)or[1,0]*4!=l[:-1]and k<4and-~min(f(l[:a]+[l[b]]+l[a+1:b]+[l[a]]+l[b+1:],k+1)for a,b in combinations(range(9),2)if max(b/3-a/3,abs(a%3-b%3))<2)

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


1
[0,1,0,1,0,1,1,1,0](প্রত্যাশিত: 4, আসল: 13) এর সাথে কাজ করে না ।
বুদ্বুদ 16

@ বুবলার এটি ঠিক করেছেন
ovs

3

জাভাস্ক্রিপ্ট (ES6), 123 বাইট

9-বিট পূর্ণসংখ্যা হিসাবে ইনপুট নেয়। নির্লজ্জভাবে নিয়ম প্রয়োগ করে ধাঁধা সমাধান করে, যা সংক্ষিপ্ততম পদ্ধতির হিসাবে প্রমাণিত হয়নি।

f=(n,k=b=-1)=>n^341?k>2?b:[3,6,9,10,17,18,20,34,36].map(m=>[1,8,8].map(M=>(x=n&(m*=M))&-x^x||f(n^m,k+1)))|b:!~b|k<b?b=k+1:b

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

মন্তব্য

f = (                           // f = recursive function taking:
  n,                            //   n = input
  k =                           //   k = number of moves, initialized to -1
  b = -1                        //   b = best result so far, initialized to -1
) =>                            //
  n ^ 341 ?                     // if n does not match the target pattern:
    k > 2 ?                     //   if we've already done more than 3 moves:
      b                         //     we're not going to find a solution -> abort
    :                           //   else:
      [3,6,9,10,17,18,20,34,36] //     for each swap bitmask m
      .map(m =>                 //     and
      [1,8,8]                   //     for each multiplier M:
      .map(M =>                 //       apply the multiplier to m and
        (x = n & (m *= M))      //       apply the final bitmask to n -> this gives x
        & -x                    //       isolate the least significant bit of x
        ^ x ||                  //       if it's the only bit set,
        f(n ^ m, k + 1)         //       then swap the bits and make a recursive call
      )) | b                    //     end of both map() loops; return b
  :                             // else:
    !~b | k < b ? b = k + 1 : b //   this is a solution in k+1 moves: update b

এনবি : এই কোডগুলি বোর্ডের শীর্ষের বাইরে কিছু অবৈধ পদক্ষেপগুলি সম্পাদন করে এম 64৪ দ্বারা গুণিত হয় But তবে এগুলি কেবল উপেক্ষা করা হয়, কারণ তারা সম্ভবত সেরা আইনী সমাধানের চেয়ে সংক্ষিপ্ত সমাধানের দিকে নিয়ে যেতে পারে না।

নীচে 9 বেস সোয়াপ বিটমাস্ক এবং লক্ষ্য প্যাটার্ন রয়েছে। উপরের বাম কোণটি সবচেয়ে গুরুত্বপূর্ণ বিট।

000  000  001  001  010  010  010  100  100     101
011  110  001  010  001  010  100  010  100     010 (341)
(3)  (6)  (9)  (10) (17) (18) (20) (34) (36)    101

আপনি কি পরীক্ষার জন্য একটি হেক্সডাম্প লিঙ্ক করতে পারেন? এছাড়াও, আমি জানতাম না যে 9 বিট পূর্ণসংখ্যা জেএসে সম্ভব হয়েছিল
স্ট্যান স্ট্রাম

@ স্ট্যানস্ট্রাম আরও সহজবোধ্য এনকোডিং সহ একটি সংক্ষিপ্ত সংস্করণে আপডেট হয়েছে। (এবং হ্যাঁ: জেএস 32 বিট পর্যন্ত বিটওয়াইজ অপারেশনগুলিকে সমর্থন করে))
আর্নল্ড

2

জেলি , 26 বাইট

“ċȤ‘ḤB;U$=a¥;Ḋm2ƊẠ€SɓSn5Nȯ

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

একটি monadic লিঙ্ক।

কিভাবে?

বাবলারের পাইথন উত্তর দ্বারা অনুপ্রাণিত ; জেলি অনুসারে গল্ফড ...

“ċȤ‘ḤB;U$=a¥;Ḋm2ƊẠ€SɓSn5Nȯ - Link: length 9 list of ones & zeros, X
“ċȤ‘                       - list of code-page indices     = [232,154]
    Ḥ                      - double                        = [464,308]
     B                     - to binary     = [[1,1,1,0,1,0,0,0,0],[1,0,0,1,1,0,1,0,0]]
        $                  - last two links as a monad:
       U                   -   upend       = [[0,0,0,0,1,0,1,1,1],[0,0,1,0,1,1,0,0,1]]
      ;                    -   concatenate = [[1,1,1,0,1,0,0,0,0],[1,0,0,1,1,0,1,0,0],[0,0,0,0,1,0,1,1,1],[0,0,1,0,1,1,0,0,1]]
           ¥               - last two links as a dyad:
          a                -   logical AND (vectorises)
         =                 -   equal? (vectorises)
                Ɗ          - last three links as a monad:
             Ḋ             -   dequeue X (remove leftmost element)
               2           -   literal two
              m            -   modulo slice (keeps the "edge-elements") 
            ;              - concatenate
                 Ạ€        - all? for €ach (edge-elements: no-op
                           -                else: 1 for any cost-2 element 0 otherwise)
                   S       - sum
                    ɓ      - new dyadic chain ^that on the right; X on the left
                     S     - sum X
                       5   - literal five
                      n    - not equal?
                        N  - negate (-1 if not exactly 5 1s, 0 otherwise)
                         ȯ - logical OR with right

2

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

s=>/^0*(10*){5}$/.test(s)*s.match(/(?=1.(..)*$|^1(..)?11.1|1.11(..)?1$)|$/g).length-1

এটি বুবলারের উত্তরের একটি রেজেক্স বন্দর ।

0/1 এর স্ট্রিং হিসাবে ইনপুট।


2

স্ট্যাক্স , 23 22 বাইট

Ç╙╤Ü┤└åVτ┐├Y-²▼░█∩¡3ëâ

এটি চালান এবং এটি ডিবাগ করুন

এই প্রোগ্রামটি একটি অ্যারে লাগে [0, 1] ইনপুট হিসাবে এবং কোনও সমাধান সম্ভব না হলে একটি পূর্ণসংখ্যার চলগুলি বা খালি স্ট্রিংটি দেয়।

গ্রিডের জন্য এই সূচকগুলি বিবেচনা করুন

0 1 2
3 4 5
6 7 8
  • ঠিক যদি না হয় 5 1 টি না থাকে তবে কোনও সমাধান নেই, সুতরাং আমরা কোনও আউটপুট উত্পাদন করি না।
  • প্রতিটি পক্ষের কেন্দ্রগুলি ভুল অবস্থান। এগুলি সূচকগুলি হ'ল 1, 3, 5 এবং 7 each1 হয় these
  • 1একটি ভুল অবস্থানে প্রতিটি জন্য এর দূরত্ব 1 বা 2 হয় এটি অন্য 2 টি দ্বারা ঘিরে থাকলে এটি 2 হবে 1। উদাহরণস্বরূপ, যদি 1সূচকগুলিতে [0, 1, 2, 4] থাকে তবে ভুলটির জন্য দূরত্ব 12।
  • এটি মাথায় রেখে, সূচক 1 অনুসারে ফলাফলের জন্য দূরত্ব অবদানের জন্য এই সিউডো কোডটি বিবেচনা করুন।

    1. সূচকগুলি থেকে 4 টি বিট পড়ুন [1, 0, 2, 4]। এটি সবচেয়ে গুরুত্বপূর্ণ অবস্থানে ভুল অবস্থান রাখে।
    2. এই বিটগুলি একটি সংখ্যায় রূপান্তর করুন b 0 থেকে 15 এ ।
    3. যখন 0 <= b <= 7দূরত্ব 0 হয় যখন 8 <= b <= 14দূরত্ব 1 হয়। যখন b == 15দূরত্ব 2 হয়। এটি দ্বারা পূর্ণসংখ্যা বিভাগটি ব্যবহার করে গণনা করা যেতে পারে b * 2 / 15

সুতরাং এই প্রক্রিয়াটি 4 বার পুনরাবৃত্তি করে এবং গ্রিডকে মাঝখানে ঘোরানোর মাধ্যমে মোট দূরত্ব গণনা করা যায়।

1#5=4*  if the number of 1s is 5, then 4, else 0
D       repeat the rest of the program that many times
  x     push the value in the x register, which is initially the input
  3/    split into 3 rows
  rM    rotate 90 degrees
  $X    flatten back into single array, and save the "rotated" array in the X register
  A|2E  get the digits of 2^10 i.e. [1,0,2,4]
  @     read the bits from the current rotation at indices [1,0,2,4]
  :b    convert bits to integer
  H15/  double, then divide by 2
  +     add to running total

এটি চালান


সম্পাদনা পরীক্ষা করে দেখুন, কোনও অসম্ভব মান গ্রহণ করা হয়, কেবল -1 না যদি এটি আপনাকে সহায়তা করে
নোহ ক্রিশটিনো

হ্যাঁ. এটি 2 বাইট সংরক্ষণ করেছে
পুনরাবৃত্তির

1

এক্সেল, 86 81 বাইট

=SUM(B1,A2,B3,C2)+B2*(AND(A1:A3)+AND(A1:C1)+AND(C1:C3)+AND(A3:C3))/(SUM(A1:C3)=5)

পুরাতন: যখন 'অসম্ভব' আউটপুট ছিল-1

=IF(SUM(A1:C3)=5,SUM(B1,A2,B3,C2)+B2*(AND(A1:A3)+AND(A1:C1)+AND(C1:C3)+AND(A3:C3)),-1)

1পরিপূর্ণ 0ইনপুট পরিপূর্ণ এবং খালি জন্য ব্যবহার করে A1:C3"অসম্ভব" ব্যতীত অন্য মানগুলি ফিরিয়ে দিতে পারলে আরও গল্ফ পাওয়া সম্ভব -1 ফিরে আসে a#DIV/0! অসম্ভব গ্রিডের থাকা ত্রুটির

বুবলারের পাইথন উত্তরের মতো একই যুক্তিতে কাজ করে ।


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