ব্রুট ফোর্স সুইচবোর্ড


32

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

-v-v-v-
-v-v-v-

বিকাশকারী হওয়ায়, আমরা স্থির করেছি যে আসলে ধাঁধাটি সমাধান করার চেয়ে 2 ^ 6 = 64 টি সংমিশ্রণের প্রত্যেকটিকেই চেষ্টা করা আরও দক্ষ হবে। সুতরাং আমরা কিছু দরিদ্র লোককে কিছু বাইনারি গণনা করার জন্য নিযুক্ত করেছিলাম:

-v-v-v-
-v-v-v-

-v-v-v-
-v-v-^-

-v-v-v-
-v-^-v-

-v-v-v-
-v-^-^-

ইত্যাদি।

চ্যালেঞ্জটি
এমন একটি প্রোগ্রাম লিখুন যা উপরের মতো বিন্যাসিত স্ট্রিং হিসাবে সমস্ত সুইচগুলি বন্ধ করে দেওয়া, কোনও ক্রমে চালু এবং বন্ধ সমস্ত সংমিশ্রণ উত্পন্ন করে।

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

ইনপুট স্ট্রিংগুলি রেজেক্সের সাথে মিলবে r'((-v)+-)(\n(-v)+-)*'এবং সমস্ত স্যুইচ বন্ধ করে একটি বোর্ডকে উপস্থাপন করবে । এর অর্থ শূন্যের কোনও ক্ষেত্রে নেই, এবং স্যুইচগুলি বাম-সারিবদ্ধ হয়। প্রতিটি সারিতে একই সংখ্যক সুইচ নাও থাকতে পারে।

প্রতিটি আউটপুট বোর্ড ইনপুট হিসাবে ঠিক একই বিন্যাসে হওয়া উচিত, ব্যতীত v এর প্রয়োজন অনুসারে replaced এর দ্বারা প্রতিস্থাপন করা যেতে পারে। আউটপুট বোর্ডগুলি যে কোনও নতুন লাইনের দ্বারা পৃথক করা যায়।

যেহেতু রানটাইম স্বাভাবিকভাবে ও (2 ^ n) সুইচের সংখ্যায় হয় তাই আপনার কোডটি কোনও বিন্যাসে 10 টিরও বেশি সুইচে পরীক্ষা করা হবে না।

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

নমুনা ইনপুট এবং আউটপুট

ইনপুট:

-v-

সম্ভাব্য আউটপুট:

-v-
-^-

ইনপুট:

-v-
-v-

সম্ভাব্য আউটপুট:

-^-
-^-
-^-
-v-

-v-
-^-


-v-
-v-

যেহেতু আপনার উত্তরটি বড় সংখ্যক সুইচের জন্য পরীক্ষা করা অত্যন্ত ক্লান্তিকর, তাই এখানে স্যানিটি পরীক্ষার সরঞ্জাম হিসাবে পাইথন স্ক্রিপ্ট। (আপনি আরও পরীক্ষার কেস চাইলে প্রদত্ত ইনপুট ফাইল থেকে প্রত্যাশিত আউটপুট তৈরি করতে আমি বর্তমানে একটি মন্তব্য-আউট স্নিপেট অন্তর্ভুক্ত করেছি;) দুর্ভাগ্যক্রমে, অনুমানের চেয়ে ইনপুট এবং আউটপুটের ক্ষেত্রে এটি কিছুটা কম নমনীয়; 'ইনপুট' নামের একটি ফাইলের ইনপুট স্ট্রিংটি একই ডিরেক্টরিতে চালিত করে 'আউটপুট' নামের একটি ফাইলের মধ্যে নিউলাইন-বিচ্ছিন্ন আউটপুট (দুঃখিত, কোনও তালিকা বিন্যাস নেই) রাখুন এবং রান করুন python3 sanitycheck.py


8
প্রথম প্রথম চ্যালেঞ্জ!
জিউসেপ

12
আশা করি, "দরিদ্র লোক" প্রতিটি কোডের মধ্যে কেবল একটি বিট ফ্লিপ করতে গ্রে কোড সম্পর্কে জানত ।
এরিক ডুমিনিল

1
সময় হ'ল আমাদের সর্বাধিক মূল্যবান সম্পদ, এটি বৃথা নষ্ট করবেন না।
পেড্রো লোবিটো

6
থিমটি দেওয়া হয়েছে, আমি হতাশ হয়েছি আপনাকে এমন কোনও অর্ডারের প্রয়োজন পড়েনি যার সর্বনিম্ন টগল প্রয়োজন (যেমন 00-> 01-> 11-> 10- তে 3 টগল রয়েছে যখন 00-> 01-> 10-> 11 এর 4 টি রয়েছে ) - সহকর্মী জন্তু বাহিনী
এসকর্টার

2
@ এরিকডুমিনিল: যদি যান্ত্রিক সুইচগুলি বোতাম না থাকে (এবং হতে পারে এমনকি) তবে সম্ভবত, এক, দুই এবং তিনটি পরপর সুইচগুলি পরিবর্তন করার সময় যে পার্থক্য প্রয়োজন (যা আপনি সম্ভবত প্রায় একই সাথে করতে পারেন) যথেষ্ট পরিমাণে বড় হবে না would গ্রে কোড অনুসরণ করার জন্য অতিরিক্ত মানসিক কাজটি অফসেট করতে।
টমাসজ

উত্তর:


23

হাস্কেল , 25 24 23 17 বাইট

mapM$min"^v".pure

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

-1 বাইট @ H.PWiz ধন্যবাদ

-1 বাইট @nimi ধন্যবাদ

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

পূর্ববর্তী উত্তর (25 বাইট)

g 'v'="v^"
g x=[x]
mapM g

ব্যাখ্যাগুলি সমস্ত পূর্ববর্তী উত্তরের জন্য, যা বেশ একইভাবে কাজ করে, ব্যতীত আমি এর সংজ্ঞাটি অন্তর্ভুক্ত করি ggএখন যেভাবে কাজ করে তা হ'ল বিকল্পের বিকল্পের ^vজন্য লেক্সিকাল তুলনা ব্যবহার করে vএবং সমস্ত কিছু একই রাখুন।

মজার বিষয় হল, এটি স্বেচ্ছাসেবক সুইচবোর্ডগুলির জন্য কাজ করে:

>>> mapM g "-----^-----"
  ["-----v-----", "-----^-----"]

ব্যাখ্যা (সংক্ষিপ্ত)

g 'v'="v^" -- for 'v', choose between 'v' or '^'
g x=[x]    -- for any other character, choose just that character
mapM g     -- find all ways to choose characters using g on the given input

ব্যাখ্যা (দীর্ঘ)

mapMহাস্কেলের সাথে পরিচিত নয় তাদের জন্য এটি একটি দুর্দান্ত ভীতিজনক ফাংশন। তবে এই প্রসঙ্গে বুঝতে অসুবিধা হয় না। এটি String(গুলি যা হাস্কেলের মধ্যে অক্ষরের তালিকাগুলি রয়েছে) এ কাজ করে, আমি এটি তালিকাগুলির জন্য এর সংজ্ঞাতে নির্দিষ্ট করেছি। সুতরাং এই প্রসঙ্গে, এর ধরণের স্বাক্ষর

mapM :: (a -> [b]) -> [a] -> [[b]]
--      ^^^^^^^^^^                  arg 1: a function from any a to a list of b
--                    ^^^           arg 2: a list of a
--                           ^^^^^ return: a list of list of b

এটি আমার ব্যবহারের ক্ষেত্রে এটি আরও বেশি বিশেষায়িত - aএবং bউভয়ই Char- তাই আমরা স্বাক্ষর হিসাবে টাইপটি দেখতে পারি

mapM :: (Char -> String) -> String -> [String]

আসুন দ্রুত gকীভাবে mapMকাজ করে তা বোঝানোর আগে কী করে তা দেখুন ।

g :: Char -> String
g 'v' = "v^"
g  x  = [x]

gChar 'v'স্ট্রিংয়ে রূপান্তর করতে প্যাটার্ন ম্যাচিং ব্যবহার করে "v^"; বাকি সমস্ত কিছুই একটি সিঙ্গলটন স্ট্রিংয়ে রূপান্তরিত হয় (মনে রাখবেন, স্ট্রিংগুলি কেবলমাত্র Chars এর তালিকা , যাতে আমরা xএকটি সিঙ্গলটন তালিকায় রাখতে পারি)। আরইপিএল-তে পরীক্ষা করে আমরা দেখতে পাই যে এটিই কেস

>>> g 'a'
  "a"
>>> g 'b'
  "b"
>>> g 'v'
  "v^"

দ্রষ্টব্য যে (আশ্চর্যজনকভাবে!) এর gআর্গুমেন্ট হিসাবে সঠিক টাইপ রয়েছে mapM

mapMএটি gএবং যুক্তি দিয়ে কীভাবে কাজ করে তা আমরা অনুসন্ধান করব

"-v-\n-v-"

ইনপুট হিসাবে

mapMপ্রথম মানচিত্রগুলি gউপর String, এবং যেহেতু gধর্মান্তরিত Charকরার গুলি Strings, এই আমাদের একটি তালিকা দেয়Strings

["-", "v^", "-", "\n", "-", "v^", "-"]

যদিও এটি সঠিক আউটপুট টাইপ, mapMকিছুটা বেশি করে। আপনি Stringযদি এ তালিকা থেকে তৈরি করতে পারেন তবে আপনি এর Stringমধ্যে প্রতিটি থেকে একটি করে চরিত্র বাছাই করতে (ক্রম) তৈরি করতে পারেন।

সুতরাং প্রথম উপাদানটির জন্য, আপনাকে বাছাই করা ছাড়া আর কোনও উপায় নেই Char '-'। দ্বিতীয় উপাদানটির জন্য, আপনি 'v'এবং এর মধ্যে এবং এর মধ্যেও বেছে নিতে পারেন '^'

এটি মোটামুটি এই অজগর কোডের সমতুল্য:

result = []
for x1 in "-":
  for x2 in "v^":
    for x3 in "-":
      ...
        result.append(''.join([x1, x2, x3, x4, x5, x6, x7]))

বাদে যেহেতু হাস্কেল Chars এবং Strings এর মধ্যে পৃথক হয় , যখন এটি গুলিগুলিকে Charএকটি তালিকায় রাখে , তাদের এটির প্রয়োজন হয় joinনা।

সুতরাং চূড়ান্ত আউটপুট হয়

["-v-\n-v-", "-v-\n-^", "-^-\n-v-", "-^-\n-^-"]

পছন্দসই হিসাবে


ওহ, আমি একটি নিখুঁত কার্যকরী উত্তরের জন্য অপেক্ষা করছিলাম, এটি সত্যিই আমাকে উড়িয়ে দিয়েছে যে এটি কতটা সংক্ষিপ্ত ছিল।
রিন্স ফুরিয়ার

2
@ রিন্স ফুরিয়ার ট্রান্সফরমার আমি mapMএই চ্যালেঞ্জের জন্য কতটা সুন্দরভাবে কাজ করেছি তাতে আমি সন্তুষ্ট হয়েছিলাম , প্রথমে আমি এটি প্রণয়ন করেছিলাম sequence . map gতবে ঠিক তেমনই প্রকাশ করা যেতে পারে mapM id . map gএবং পরে দেখলাম আমি ঠিক পেরেছিmapM g
20:25

1
আমার মনে হয় আপনি অদলবদল করতে পারেন =='v'জন্য>'-'
H.PWiz

9

পার্ল 6 , 32 বাইট

{[X~] .comb».&{$_,('^'if /v/)}}

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

  • .comb স্ট্রিংকে অক্ষরে বিভক্ত করে।
  • ».&{...} ধনুর্বন্ধনী মধ্যে ফাংশন অনুযায়ী অক্ষর মানচিত্র।
  • $_, ('^' if /v/)প্রতিটি চরিত্রের জন্য বিকল্প একটি তালিকা উত্পাদন করে। শুধু vএকটি বিকল্প আছে: ^
  • [X~]স্ট্রিং-কনটেনটেশন ক্রস-প্রোডাক্ট অপারেটরের সাথে সেই তালিকাটি হ্রাস করে X~

9

জেলি , 7 বাইট

«Ƭ€”^Œp

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

আউটপুট হ'ল জেলি স্ট্রিংগুলির একটি তালিকা।

ব্যাখ্যা:

«Ƭ€”^Œp  Arguments: 1
«Ƭ€”^    Dyad-nilad pair
  €       Map over left argument
 Ƭ         Apply repeatedly until a result that has previously been seen is seen
           again, return original and intermediate results
«           Dyad: Minimum of arguments
   ”^     Nilad: Literal: '^'
         Note: 'v' is the only character that is greater than '^' and can
         appear in the input, so, while for every character c other than 'v'
         this operation returns [c], for 'v' it returns ['v', '^']. In this way,
         duplicates are never going to appear in the output.
     Œp  Monad: Cartesian product of elements

আমি জেলি কোড পৃষ্ঠাগুলি দিয়ে ঝাঁকুনি খেয়েছি তা জানার চেষ্টা করার জন্য যে প্রথম উত্তরটি কীভাবে প্রতিটি উত্তরকে নিয়মিতভাবে আরও ভাল করে ফেলেছে, প্রায় সবসময়ই বেশ ভাল মার্জিন দ্বারা ... কীভাবে এটি ব্যাখ্যা করে আপনি কি যত্ন নেবেন?
রিন্স ফুরিয়ার

@ রিন্সফুরিয়ার ট্রান্সফর্ম আমি একটি ব্যাখ্যা যুক্ত করেছি।
এরিক আউটগল্ফার

6

পার্ল 5 , 29 বাইট

sub{glob"\Q@_"=~s/v/{v,^}/gr}

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

আমার প্রথম জমা!


সাধারণত, পার্ল 5 গল্ফরা sub{}ন্যূনতম অন্তর্ভুক্ত করা থেকে বাঁচাতে ফাংশনের পরিবর্তে প্রোগ্রাম জমা দেয়। কিন্তু তারা যোগ আছে say, say␠, say forবা say for␠বিনিময়ে।

সাব অ্যাপ্রোচ দিয়ে, আমি সংক্ষিপ্ত করতে পারি

say for glob"\Q$_"=~s/v/{v,^}/gr        # Perl 5, -0n, 32 bytes

থেকে

sub{glob"\Q@_"=~s/v/{v,^}/gr}           # Perl 5, 29 bytes

ব্যাখ্যাটি বেশ সহজ। পার্ল 5 এর একটি বিল্টিন globঅপারেটর রয়েছে যা শেলের মতো গ্লোব প্যাটার্ন গ্রহণ করে যা ফাইলের নামের তালিকা তৈরি করতে ব্যবহার করা যেতে পারে (যেমন foo*.txt) বা স্ট্রিংগুলির তালিকা (যেমন {a,b,c}) eg ধরাটি হ'ল নতুন লাইনের হাতছাড়া হওয়া দরকার, যা আমি quotemeta(যেমন \Q) ব্যবহার করে করেছি ।


4

কে (এনএনজি / কে) , 27 25 বাইট

{?(,/,/:\:)/x,'"^"/"v"\x}

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

"^"/"v"\"v"সঙ্গে প্রতিস্থাপন"^"

x,' মূল অক্ষরের সাথে জিপ করুন

(,/,/:\:)/ কারটিশিয়ান পণ্য শেষ

? uniq


.. এবং এখানে আমার মনে হচ্ছে আমি 44 বাইটে ঠিকঠাক করেছি!
streetster

4

এপিএল (ডায়ালগ ক্লাসিক) , 21 17 15 বাইট

⊃⊢∘.,.∪'v'r'^'

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

অনুরূপ আমার ট সমাধান

স্ট্রিংগুলির একটি n- মাত্রিক অ্যারে প্রদান করে (n = সুইচের সংখ্যা)

ফর্মটি ব্যাখ্যা করা সহজ: ⊃(∘.,⌿ ⊢ ∪¨ 'v'⎕r'^')

'v'⎕r'^'vএস এর সাথে ^এস প্রতিস্থাপন করুন

⊢ ∪¨... প্রতিটি মূল চরিত্রের সাথে ইউনিয়ন। এটি 1 বা 2 দৈর্ঘ্যের স্ট্রিংয়ের ভেক্টর

∘.,⌿ কার্টেসিয়ান পণ্য হ্রাস

প্রকাশ করা

সম্পূর্ণ গল্ফযুক্ত সংস্করণে পৌঁছাতে আমরা নিদর্শনটি অনুসরণ করি f⌿ A g¨ B-> A f.g B:

∘.,⌿ ⊢ ∪¨ 'v'⎕r'^' -> ⊢ ∘.,.∪ 'v'⎕r'^'

পার্শ্ব প্রতিক্রিয়া হিসাবে প্রথম বন্ধনী আর প্রয়োজন হয় না


বাহ্যিক-পণ্য অভ্যন্তরীণ পণ্য সহ যে কোনও কিছুই +1 প্রাপ্য।
এডম

3

জে , 42 বাইট

]`('v'I.@e.~[)`[}"1'v^'{~2#:@i.@^1#.e.&'v'

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

ব্যাখ্যা

]`('v' I.@e.~ [)`[}"1 ('v^' {~ 2 #:@i.@^ 1 #. e.&'v')

নিতে দাও

-v-
-v-

আমাদের উদাহরণ ইনপুট হিসাবে।

  • ('v^' {~ 2 #:@i.@^ 1 #. e.&'v')ইনপুট ফর্ম্যাটটিকে উপেক্ষা করে কেবল স্যুইচগুলির সমস্ত সম্ভাব্য কম্বো তৈরি করে। আমাদের উদাহরণস্বরূপ এটি উত্পাদন করে:

    vv
    v^
    ^v
    ^^
    
    • 1 #. e.&'v'ইনপুটটিতে vগুলি এর সংখ্যা গণনা করে ।
    • 2 #:@i.@^সেই শক্তিতে 2 উত্থাপন করে 0 থেকে সেই সংখ্যায় পূর্ণসংখ্যা তৈরি করে i.এবং তাদের বাইনারি রূপান্তরিত করে#:
    • 'v^' {~বাইনারি ডিজিট পরিবর্তিত vএবং^
  • ]`('v' I.@e.~ [)`[}"1পূর্ববর্তী পদক্ষেপে বর্ণিত ফলাফলের প্রতিটি সারিটির (যেমন, সমস্ত সম্ভাব্য v/ ^কম্বোস) এর একটি অনুলিপি তৈরি করে মূল ইনপুটটি সংশোধন করে । প্রতিটি অনুলিপিতে vমূল ইনপুটটির v/ / এর একটি সম্ভাব্য ক্রম দিয়ে প্রতিস্থাপন করা হয় ^

3

জাভা, 202 197 189 191 বাইট

হ্যাঁ, এটি তুলনামূলক ভার্ভোজ ভাষা, তবে এটিকে আমি শাস্ত্রীয় গল্ফিং হিসাবে বিবেচনা করি:

import java.util.function.Function;

public class SwitchBored
{
    public static void main(String[] args)
    {
        Function<String, String> f = s->{byte i,j,k,m=1,u='^',d='v',a[]=(s+"\n\n").getBytes();for(i=0,s="";i<m;i++,s+=new String(a))for(j=0,k=0;k<a.length;k++){if(a[k]==d||a[k]==u){a[k]=(i&1<<j++)!=0?u:d;m<<=i>0?0:1;}}return s;};

        //System.out.println(f.apply("-v-"));
        System.out.println(f.apply("-v-v-v-\n-v-v-v-"));
        //System.out.println(f.apply("-v-v-v-\n-v-v-"));
        //System.out.println(f.apply("-v-v-v-v-v-\n-v-"));
        //System.out.println(f.apply("-v-v-v-v-v-\n-v-v-v-v-v-"));
    }
}

আমি ভেবেছিলাম যে যথাযথ বিন্যাসে পৌঁছানোর জন্য প্রয়োজনীয় লাইন ব্রেকগুলির সাথে মোকাবিলা করার একটি "সহজ" উপায়টি আসলে আসল ইনপুট চরিত্রের অ্যারেটি পুনরায় ব্যবহার করা এবং এটি কেবলমাত্র 'v'এবং এর সাথে পূরণ করা এবং'^' উপযুক্ত পজিশনে এস ।

আপডেট:

দেখা গেল যে পজিশনগুলি সংরক্ষণ না করাint এবং অ্যারে ভেরিয়েবল ডিক্লেয়ারেশনগুলি (অ্যারেগুলির প্রতিটি অবস্থান যাচাই করেই ব্যয়ে এটিতে রয়েছে vবা ফ্লাইতে রয়েছে ^) খনন করতে দেয়, 5 বাইট সংরক্ষণ করে।

আরও 8 টি বাইট উচ্চতর (1<<numberOfSwitches)সীমাটিকে আরও নিখুঁতভাবে গণনা করে সংরক্ষণ করা হয়েছে ।

মন্তব্যে উল্লিখিত নিয়ম অনুসারে, ফাংশন ঘোষণা গণনা করা উচিত, সুতরাং এখন এটি ল্যাম্বডা ...


2
আমি নিশ্চিত যে String generate(String s) {...}আপনার বাইট গণনায় ফাংশন সংজ্ঞা ( ) অন্তর্ভুক্ত করতে হবে pretty 191 বাইটের জন্য এখানে একটি স্থির / ল্যাম্বডা সংস্করণ । আমি 3 বাইট ছাঁটাই করতে কিছু ছোটখাটো গল্ফিং করেছি
বেনজামিন আরউখার্ট

@ বেঞ্জামিন উরখার্ট ঠিক আছে, এগুলি "নিয়ম" এর সাথে সম্পর্কিত যার সাথে আমি পরিচিত নই (আমি এখানে নিয়মিত গল্ফ করছি না)। আমি ভেবেছিলাম যে প্রকৃতটি { function body }প্রাসঙ্গিক হওয়া উচিত, কারণ আপনি এটি কোনও ফাংশনে রেখেছেন staticবা না রাখুন তাতে কিছু আসে যায় না এবং অবশ্যই ঘোষণা যদি স্কোরের দিকে গন্য হয় তবে কেউ এটিকে ল্যাম্বডা অভিব্যক্তিতে রূপান্তর করতে পারে। তবে এখন এটি করা হয়েছে, এটি দেখানোর জন্য ধন্যবাদ thanks
মার্কো 13

1
কয়েকটি পরামর্শ: 1. অক্ষর ( d=94) না করে ascii-কোডগুলি ব্যবহার করুন । ২. iআপনি যখন এটি ঘোষণা করবেন তখন সূচনা করুন । ৩. i++<mআলাদা ইনক্রিমেন্টের পরিবর্তে ব্যবহার করুন (এক জায়গায় লুপের বিষয়বস্তুগুলিকে সংশোধন করা দরকার, তবে এটি কোনও ব্যয় যোগ করে না)। ৪. আপনি কি সাথে পালাতে পারবেন (i&1<<j++)>0? ৫. আমি মনে করি না আপনাকে {}অভ্যন্তরীণ forলুপের প্রয়োজন হবে। You. আপনি এটির a[k]==d||a[k]==uসাথে প্রতিস্থাপন করতে পারেন a[k]>45, আমি মনে করি। 7. সাথে যান j=k=0। যে সমস্ত 19bytes অপসারণ করা উচিত।
ভিজ্যুয়ালমেলন

@ ভিজুয়ালমেলন এর মধ্যে কয়েকটি "ক্লাসিকাল গল্ফিং" পদ্ধতি রয়েছে এবং আমি এর মধ্যে কয়েকটি প্রয়োগ করেছি। সেগুলি প্রযোজ্য কি না তা নির্ভর করে - আমি মনে করি কিছু {}প্রয়োজনীয় প্রয়োজন তবে আমি অন্য চেহারা পেতে পারি। a[k]>45একটি ঝরঝরে কৌতুক তবে হতে পারে। স্বীকারোক্তিপূর্ণ, আমি কেবল একটি মিটিং শুরু হওয়ার অপেক্ষায় কিছু সময় নষ্ট করার জন্য এটি লিখেছিলাম (সুতরাং শ্রেণীর নাম - এটি উদ্দেশ্যমূলক ছিল ;-)) তবে আমার অন্য চেহারা হবে - যে কোনও ক্ষেত্রে ধন্যবাদ!
মার্কো 13

@ মার্কো 13 প্রকৃতপক্ষে, সেগুলি ক্লাসিক কৌশল, তবে সমস্ত এখানে বিশেষভাবে প্রযোজ্য। আমি তাদের উপর ভিত্তি করে আমার 172 বাইট সমাধানটি দিয়ে মজাদার ক্ষতি করব না (বিটিডাব্লু, আপনার মনে হয় এটি আপনার 192, 191 নয়, তবে ল্যাম্বদা গণনা কীভাবে কাজ করে তা আমি জানি না: আমি যে কোনও ক্ষেত্রেই এর বিরোধী )।
ভিজ্যুয়ালমেলন

3

জে , 41 40 24 বাইট

[:>@,@{<@(,'^'$~'v'=])"0

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


খুব চিত্তাকর্ষক. ব্যবহার পছন্দ {। যদিও আমি মনে করি [:>@,@{<@(,'^'$~'v'=])"0যেহেতু "প্রতিটি আউটপুট বোর্ড ইনপুট হিসাবে ঠিক একই ধরণের হওয়া উচিত" এবং ইনপুটটি বাক্সযুক্ত নয় slightly
যোনা

@ জোনাহ ধন্যবাদ সংশোধিত।
এনজিএন


3

সি (জিসিসি) , 75 74 70 বাইট

-5 বাইট @ সিলিংক্যাট ধন্যবাদ

*b=0;f(char*s){b=b?b:s;*s?f(s+1),*s>46?*s=94,f(s+1),*s='v':0:puts(b);}

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

লেখার জন্য মেমরি sপয়েন্টগুলির প্রয়োজন



সত্যিই ব্রায়ানমিন্টন এবং আমি এটি চেষ্টা করার কথা ভাবিনি। চমৎকার!
এনজিএন

3

পাইথন 3.8 (প্রাক রিলিজ) , 129 117 116 110 106 বাইট

-10 বাইটস @ চাস ব্রাউনকে ধন্যবাদ

f=lambda s:{s.replace('v','{}').format(*['v^'[c<'1']for c in bin(x+i)[::-1]])for i in range(x:=1<<len(s))}

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


1
পিপিসিজিতে আপনাকে স্বাগতম! একই ধরণের ধারণাটি ব্যবহার করে 123 বাইট
চ্যাস ব্রাউন

1
১১৯ বাইট (এই মন্তব্যে আগের ভুল লিঙ্ক)।
চ্যাস ব্রাউন


2

K4 , 44 বাইট

সমাধান:

-1{@[x;&w;:;]@'"v^"@a\:'!*/a:(+/w:"v"=x)#2};

উদাহরণ:

q)k)-1{@[x;&w;:;]@'"v^"@a\:'!*/a:(+/w:"v"=x)#2}"-v-";
-v-
-^-

q)k)-1{@[x;&w;:;]@'"v^"@a\:'!*/a:(+/w:"v"=x)#2}"-v-\n-v-";
-v-
-v-
-v-
-^-
-^-
-v-
-^-
-^-

q)k)-1{@[x;&w;:;]@/:"v^"@a\:'!*/a:(+/w:"v"=x)#2}"-v-v-\n-v-v-v-\n-v-";
-v-v-
-v-v-v-
-v-
-v-v-
-v-v-v-
-^-
-v-v-
-v-v-^-
-v-
-v-v-
-v-v-^-
-^-
-v-v-
-v-^-v-
-v-
-v-v-
-v-^-v-
-^-
-v-v-
-v-^-^-
-v-
-v-v-
-v-^-^-
-^-
-v-v-
-^-v-v-
-v-
-v-v-
-^-v-v-
-^-
-v-v-
-^-v-^-
-v-
-v-v-
-^-v-^-
-^-
-v-v-
-^-^-v-
-v-
-v-v-
-^-^-v-
-^-
-v-v-
-^-^-^-
-v-
-v-v-
-^-^-^-
-^-
-v-^-
-v-v-v-
-v-
-v-^-
-v-v-v-
-^-
-v-^-
-v-v-^-
-v-
-v-^-
-v-v-^-
-^-
-v-^-
-v-^-v-
-v-
-v-^-
-v-^-v-
-^-
-v-^-
-v-^-^-
-v-
-v-^-
-v-^-^-
-^-
-v-^-
-^-v-v-
-v-
-v-^-
-^-v-v-
-^-
-v-^-
-^-v-^-
-v-
-v-^-
-^-v-^-
-^-
-v-^-
-^-^-v-
-v-
-v-^-
-^-^-v-
-^-
-v-^-
-^-^-^-
-v-
-v-^-
-^-^-^-
-^-
-^-v-
-v-v-v-
-v-
-^-v-
-v-v-v-
-^-
-^-v-
-v-v-^-
-v-
-^-v-
-v-v-^-
-^-
-^-v-
-v-^-v-
-v-
-^-v-
-v-^-v-
-^-
-^-v-
-v-^-^-
-v-
-^-v-
-v-^-^-
-^-
-^-v-
-^-v-v-
-v-
-^-v-
-^-v-v-
-^-
-^-v-
-^-v-^-
-v-
-^-v-
-^-v-^-
-^-
-^-v-
-^-^-v-
-v-
-^-v-
-^-^-v-
-^-
-^-v-
-^-^-^-
-v-
-^-v-
-^-^-^-
-^-
-^-^-
-v-v-v-
-v-
-^-^-
-v-v-v-
-^-
-^-^-
-v-v-^-
-v-
-^-^-
-v-v-^-
-^-
-^-^-
-v-^-v-
-v-
-^-^-
-v-^-v-
-^-
-^-^-
-v-^-^-
-v-
-^-^-
-v-^-^-
-^-
-^-^-
-^-v-v-
-v-
-^-^-
-^-v-v-
-^-
-^-^-
-^-v-^-
-v-
-^-^-
-^-v-^-
-^-
-^-^-
-^-^-v-
-v-
-^-^-
-^-^-v-
-^-
-^-^-
-^-^-^-
-v-
-^-^-
-^-^-^-
-^-

ব্যাখ্যা:

জায়গায় জায়গায় প্রতিস্থাপন "^" । সুইচগুলির সংমিশ্রণের সংখ্যা নির্ধারণ করুন (উদাহরণস্বরূপ 2 ^ n), বাইনারি গণনা করুন, সুইচগুলি প্রতিস্থাপন করুন ...

-1{@[x;&w;:;]@'"v^"@a\:'!*/a:(+/w:"v"=x)#2}; / the solution
-1                                         ; / print to STDOUT, swallow -1
  {                                       }  / lambda taking implicit x
                                        #2   / take 2
                             (         )     / do this together
                                  "v"=x      / does input = "v" ?
                                w:           / save as w
                              +/             / sum up
                           a:                / save as a
                         */                  / product
                        !                    / range 0..n
                    a\:'                     / convert each to base-2
               "v^"@                         / index into "v^"
             @'                              / apply each
   @[x;&w;:;]                                / apply assignment to x at indexes where w is true

2

আর , 116 বাইট

function(x,u=utf8ToInt(x))apply(expand.grid(rep(list(c(118,94)),sum(u>45))),1,function(i)intToUtf8(`[<-`(u,u>45,i)))

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

নিউলাইন পৃথক বোর্ডগুলির ভেক্টর ফেরত ফাংশন


আহ, আমি অনেক বেশি শক্তভাবে ইনপুট নেওয়ার প্রতি এতটা দৃষ্টি নিবদ্ধ রেখেছিলাম যে আমি এইটির স্বাচ্ছন্দ্যের বিষয়টি অবহেলা করেছি। ভাল ব্যবহার "[<-"!
জিউসেপ

@ জিউস্পেপ: আমি এই সমাধানটি দ্বারা খুব সন্তুষ্ট নই ... তবে আমি অন্যান্য উপায়ে (যেমন বাইনারি রূপান্তর ব্যবহার করে) সংমিশ্রণগুলি তৈরি করার চেষ্টা করেছি তবে এটি সংক্ষিপ্ততম হিসাবে শেষ হয়েছিল।
digEmAll সমস্ত


1

রেটিনা 0.8.2 , 29 বাইট

T`¶v`;#
+%1`#
v$'¶$`^
%`;|$
¶

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

T`¶v`;#

নতুন লাইনে পরিবর্তন করুন ; s এবং vগুলি মধ্যে #চিহ্নিতকারী।

+%1`#

#বাম থেকে ডানে একবারে একটিকে প্রতিস্থাপন করুন ।

v$'¶$`^

প্রতিটি রেখাকে দুটি লাইনে পরিবর্তন করুন, একটি দিয়ে #প্রতিস্থাপন করা একটিv , এর সাথে প্রতিস্থাপন করা হবে ^

%`;|$
¶

;এসটিকে নতুন লাইনে পরিবর্তন করুন এবং ফলাফলগুলি আলাদা করুন space




1

পাইথন 3 - কনস্ট্রাক্ট, 203 বাইট

def f(a):
 b=[0]
 for l in a.split():b+=[b[-1]+l.count('v')]
 return'\n'.join(''.join(f"{k:b}".zfill(b[-1])[x:y]+'-\n'for x,y in zip(b,b[1:]))for k in range(2**b[-1])).replace('0','-v').replace('1','-^')

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

প্রথম চেষ্টা করুন, খুব ছোট নয় তবে কাজ করে। পাইথনে এখানে কোনও মার্জিত স্ট্রিং প্রতিস্থাপন নেই ...

প্রথম লুপটি বিট সূচকগুলিতে লাইনগুলির ম্যাপিং তৈরি করে, অর্থাত্ প্রতিটি লাইনের জন্য, বিট কাউন্টারে প্রথম বিটের সূচকটি সংরক্ষণ করা হয়। এটি পরবর্তী লুপের বিট কাউন্টারকে সূচীকরণের জন্য ব্যবহৃত হয়।

দ্বিতীয় লুপটি বাইনারি কাউন্টার চালায়, প্রতিটি লাইন এবং পুনরাবৃত্তির জন্য বিটগুলি বের করে এবং তাদের সাথে যোগ দেয়। সমস্ত কিছু একসাথে যোগদানের পরে, স্ট্রিং প্রতিস্থাপন ব্যবহার করে এটি আবার স্যুইচ মানচিত্রের ফর্ম্যাটে অনুবাদ করা হয়েছে।

আমার ধারণা, বারবার পুনর্নির্মাণের পরিবর্তে ইনপুট স্ট্রিংটিকে পুনরায় ব্যবহারের মাধ্যমে আরও মার্জিত উপায় রয়েছে।

সম্পাদনা করুন: পাইথন ৩.৮ উত্তরের দ্বারা অনুপ্রাণিত হয়ে প্রতিস্থাপনের সংস্করণটি এখানে রয়েছে version

পাইথন 3 - 123 বাইট প্রতিস্থাপন করুন

def f(a):r=range;n=a.count('v');return'\n'.join(a.replace('v','{}').format(*('v^'[k&2**i>0]for i in r(n)))for k in r(2**n))

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


0

রুবি , 64 বাইট

একটি অ্যারে প্রদান করে। থেকে নম্বর পেয়েছে1 থেকে 2বনাম (কোথায় বনাম ইনপুটটিতে "ভি" এর সংখ্যা) এবং এর উপর ভিত্তি করে স্যুইচগুলি উল্টায় বনামকমপক্ষে উল্লেখযোগ্য বিট এটি আমাদের কাছ থেকে পুনরাবৃত্তি করে একটি বাইট সংরক্ষণ করতে দেয়0 থেকে 2বনাম-1, কারন বনাম অন্তত গুরুত্বপূর্ণ বিট 2বনাম সব শূন্য।

রুবিতে, সর্বনিম্ন উল্লেখযোগ্য বিট থেকে শুরু i[j]করার jতম iবিটটি দেয়, এটি সমান (i>>j)&1

->s{(1..2**s.count(?v)).map{|i|j=-1;s.gsub(/v/){'v^'[i[j+=1]]}}}

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


0

কাঠকয়লা , 28 বাইট

⪫EX²№θv⭆θ⎇⁼λv§v^÷ιX²№…θμv붶

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

   ²                            Literal 2
  X                             Raised to power
    №                           Count of
      v                         Literal `v`
     θ                          In input string
 E                              Map over implicit range
        θ                       Input string
       ⭆                        Map over characters and join
           λ                    Current character
          ⁼                     Equal to
            v                   Literal `v`
         ⎇                      Then
              v^                Literal `v^`
             §                  Circularly indexed by
                 ι              Outer index
                ÷               Integer divided by
                   ²            Literal 2
                  X             Raised to power
                    №           Count of
                        v       Literal `v`
                      θ         In input string
                     …          Truncated to length
                       μ        Inner index
                         λ      Else current character
⪫                         ¶¶    Join with newlines
                                Implicitly print

0

পিএইচপি , 93 বাইট

for(;$j<1<<$x;$j+=print$s)for($x=0,$s=$argv[1];$i=strpos($s,v,$i+1);$s[$i]=$j&1<<$x++?'^':v);

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

স্বতন্ত্র প্রোগ্রাম, কমান্ড লাইন মাধ্যমে ইনপুট।

এর সংখ্যার উপর ভিত্তি করে ইনপুট স্ট্রিংয়ের সম্ভাব্য অনুমতিগুলির সংখ্যা লুপ করুন v। বাইনারি গণনা করার সময়, প্রতিটি বাইনারি 1একটি ^এবং প্রতিটি বাইনারি 0সাথে vইনপুট স্ট্রিংয়ের সাথে প্রতিস্থাপন করুন।

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