একটি স্যুইচবোর্ডে কিছু স্যুইচ উল্টে দিন


23

এই চ্যালেঞ্জ দ্বারা অনুপ্রাণিত ।

গোল:

প্রাক-কনফিগার করা সুইচবোর্ড এবং সূচকের তালিকা দেওয়া, প্রদত্ত সূচকে স্যুইচগুলি উল্টে দিন।

একটি স্যুইচবোর্ড বেশ কয়েকটি সংখ্যক স্যুইচ ( vবা ^) এর মধ্যে জড়ানো এবং -বিভিন্ন দৈর্ঘ্যের সারিগুলিতে সজ্জিত। এখানে একটি উদাহরণ সুইচবোর্ড:

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

বিপরীতমুখী করতে / একটি সুইচ অর্থ ব্যয় এটিকে পরিবর্তন করা টুসকি vকরতে ^, বা থেকে ^থেকে v

স্যুইচগুলি বাম থেকে ডান, উপরে থেকে নীচে সূচিযুক্ত হয়। উদাহরণস্বরূপ, উপরের উদাহরণে, vপ্রথম সারির শেষটি 3 অবস্থানে থাকবে এবং ^মধ্যবর্তী সারিতে 4 হবে (1-সূচক ব্যবহার করে)।

ইনপুট:

  • একটি স্ট্রিং (বা স্ট্রিংগুলির তালিকা) যা স্যুইচবোর্ডকে উপস্থাপন করে। এটি রিজেক্সের সাথে মিলে যাওয়ার গ্যারান্টিযুক্ত ((-[v^])+-)(\n(-[v^])+-)*
  • সূচকের প্রতিনিধিত্বকারী সংখ্যার একটি সম্ভবত শূন্য তালিকার তালিকাটি 0 বা 1 হতে পারে (বা কিছু স্বেচ্ছাচারী সংখ্যা চাইলে) সূচিকৃত হতে পারে। এগুলি স্যুইচগুলি ফ্লিপ করা দরকার।

আউটপুট:

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

নিয়মাবলী:

  • ইনপুট সর্বদা সঠিকভাবে ফর্ম্যাট করা হবে এবং কোনও প্রদত্ত সূচক সীমার বাইরে থাকবে না।
  • সূচকের তালিকা বাছাই করা হবে এবং কোনও সদৃশ থাকবে না।
  • আপনি কী সূচকটি ব্যবহার করছেন তা আপনার উত্তরে বলুন, তা 0, 1 বা কিছু স্বেচ্ছাসেবী হোক।
  • আউটপুটটি ইনপুটটির মতো দেখায় ততক্ষণ হোয়াইটস্পেসটি ঠিক আছে।
  • এটি তাই সংক্ষিপ্ততম কোডের জয়।

উদাহরণ:

#Using 1-indexing
input: #Empty Case
[],
-v-^-v-

output:
-v-^-v-

input: #Single switch
[1],
-v-

output:
-^-

input: #Skip a line
[3,5],
-^-v-v-
-v-
-^-^-

output:
-^-v-^-
-v-
-v-^-

input: #Flip one in each line + number wrap
[3,4,6],
-^-v-v-
-v-
-^-^-

output:
-^-v-^-
-^-
-^-v-

input: #Flip 'em all
[1,2,3,4,5,6],
-^-v-v-
-v-
-^-^-

output:
-v-^-^-
-^-
-v-v-

আমরা একটি আয়তক্ষেত্রাকার চর অ্যারে আউটপুট করতে পারি, ফাঁকা স্থানগুলির সাথে ছোট লাইনগুলিকে ডান-প্যাডিং করব? এছাড়াও, আমরা কি এই ফর্মটি ইনপুট নিতে পারি?
লুইস মেন্ডো

@ লুইস মেন্ডো আমি ইনপুট হিসাবে নেওয়ার বিষয়ে না বলতে চাই। ইনপুটটির মতো দেখতে সাদা স্থানটি দীর্ঘক্ষণ ঠিক আছে।
ভেস্কাহ

2
অক্ষরগুলি কিনা তা যাচাইকারীদের প্রতি ইঙ্গিত >"-": যেহেতু ইনপুট স্ট্রিংটি শুরু হওয়ার গ্যারান্টিযুক্ত তাই আপনি -তার পরিবর্তে প্যারামিটার / যুক্তি / ভেরিয়েবল নামের সাথে ব্যবহার করতে পারেন।
শেগি

উত্তর:


11

ভিম, 60, 46, 38 , 37 বাইট / কীস্ট্রোক

qq/\d
ggDJ@"/[v^]
sv^<esc>l?\V<C-r>"
x@qq4u@q

<esc>এবং <C-r>উভয়ই 1 বাইট / কীস্ট্রোক। বাইট কাউন্টার

পরীক্ষার কেস 1 (ভার্বোজ মোড)

পরীক্ষার কেস 2 (ভার্বোজ মোড)

22 টি বাইট হ্রাস করার নেতৃত্বের জন্য গ্রিমিকে ধন্যবাদ


2
@ ভেস্কাহ উঘহঃ ভিম প্রান্তের কেস "0 বার কিছু করা" সম্পর্কে অত্যন্ত চতুর। সম্পাদনা দেখুন
ডিজেএমসিএমহেম

-13 বাইট জন্য :s/\%V./\='v^'[submatch(0)=='v']হতে পারে না cl<C-R>='v^'['<C-R>"'=='v']? (প্রতিটি <CR> কেবল একটি বাইট))
Grimmy

2
@ গ্রিমি ওহ, ভাল ধারণা। এছাড়াও s == cl, -14সামগ্রিকভাবে।
DJMcMayhem

অন্যান্য ধারণা: s^v!<Esc>?\<C-R>"<CR>xhf!xবা s<CR>^v<Esc>:s/\V<C-R>"<CR>kgJ
Grimmy

1
আমি এটি সম্পর্কে ভেবেছিলাম, তবে এটি ব্যর্থ হয় যদি চরিত্রটি উল্টানো যায় তবে একটি লাইনের শেষে থাকে ... তবে তারপরে ইনপুট স্পেস গ্যারান্টি দেয় যে এটি অনুসরণ -করবে, তাই এটি কার্যকরভাবে কাজ করে! Duh।
Grimmy


4

কে (ওকে) , 31 27 বাইট

সমাধান:

`0:{@[x;(&x>93)y;"^v"94=]};

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

ব্যাখ্যা:

দ্রুত উত্তর, এটি গল্ফ চেষ্টা করবে। 0-ইন্ডেক্স।

`0:{@[x;(&x>93)y;"^v"94=]}; / the solution
`0:                       ; / print to stdout
   {                     }  / lambda taking 2 implicit args x & y
    @[ ;        ;       ]   / apply @[var;index;function]
                     94=    / 94 (ASCII "v") equal to? returns 0 or 1
                 "v^"       / index into "v^" (ie flip switch)
               y            / index into
        (     )             / do this together
          x>93              / x greater than 93 (ASCII "]")
         &                  / indices where true
      x                     / apply to x

নোট:

  • >93কৌতুক ধন্যবাদ -4 বাইট

3

পাইথন 3 , 140 134 103 বাইট

(-30 ডিজেএমসিমেহেমকে ধন্যবাদ ♦, ব্ল্যাক আউল কাইকে আরও 1 ধন্যবাদ)

def f(i,y,x=1):
 for c in y:q=c>'-';p=len(i)and x==i[0]*q;print([c,"v^"[c>'^']][p],end='');x+=q;i=i[p:]

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


ওফ, দ্বিতীয়টি কিছুতেই গল্ফ করার চেষ্টা করুন। xবর্তমান স্যুইচ সূচকে ট্র্যাক রাখতে এটি স্ট্রিংয়ের উপরে কেবল একটি অপ্রয়োজনীয় লুপ ব্যবহার করে । 1-ইনডেক্সিং ব্যবহার করে।

Ungolfed:

def f(i,y):
     x = 1
     for c in y:
         nextchar = c # nextchar gets golfed out completely within the print
         if c in 'v^': # golfed as c>'-'
             if len(i) and x==i[0]:
                nextchar = 'v' if c=='^' else '^'
                i = i[1:]
             x += 1
         print(nextchar, end='')



অথবা 104 যদি অজগর 3 গ্রহণযোগ্য হয়
ডিজেএমসিএমহেম

@ ডিজেএমসিএমহেম ওহ, এই প্রতিস্থাপনের জন্য ধন্যবাদ xd আপনি কি পাইথন 3 পৃথক উত্তর হিসাবে পোস্ট করতে চান, বা আপনি কি এটি সম্পাদনা হিসাবে যুক্ত করার মতো যথেষ্ট বলে মনে করেন?
রিনের ফুরিয়ার

1
এটি যোগে নির্দ্বিধায় :) আমি একটি অজগর 3 উত্তর পোস্ট করতে পারে, তবে আমি সম্ভবত আমার নিজের পদ্ধতির সাথে প্রথমে আসার চেষ্টা করব।
DJMcMayhem

3

জেলি , 12 বাইট

O^%5T⁴ịƲ¦40Ọ

একটি স্ট্রিং গ্রহণ করে পূর্ণ প্রোগ্রাম এবং পূর্ণসংখ্যার একটি তালিকা যা ফলাফল মুদ্রণ করে।

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

কিভাবে?

O^%5T⁴ịƲ¦40Ọ - Main Link: list of characters, S; inversion indices, I
O            - to ordinals   ('\n':10, '-':45, '^':94, 'v':118)
        ¦    - sparse application...
       Ʋ     - ...to indices: last four links as a monad: f(O(S))
  %5         -   modulo 5   (10:0, 45:0, 94:4, 118:3)
    T        -   truthy indices (giving, X, indices of '^' and 'v' in S)
     ⁴       -   4th command line argument = I
      ị      -   index into X   (giving indices of '^' and 'v' to invert in S)
 ^       40  - ...action: XOR with 40   (94:118, 118:94)
           Ọ - from ordinals
             - implicit print


3

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

->$_,\s{S:nth(s){\^|v}=$/~^'('}

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

(-২ বাইট জো কিংকে ধন্যবাদ জানায়)

পার্ল 6 এর প্রতিস্থাপন অপারেটরটি Sসুবিধামত একটি nthক্রিয়াবিজ্ঞান গ্রহণ করে যা প্রতিস্থাপনটি করতে শুধুমাত্র একটি সূচককেই গ্রহণ করে না, তবে এখানে প্রয়োজনীয় হিসাবে ঠিক একটি তালিকা।

প্রতিস্থাপন $/ ~^ '(', যেখানে $/মিলেছে টেক্সট (হয় হয় vবা ^), ~^stringwise একচেটিয়া বা অপারেটর, এবং (চরিত্র যার বিট পালা vমধ্যে ^এবং তদ্বিপরীত।



2

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

c!tt45>o2yfi)(2=XK)t106-E-K(!

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পাঠ্য কেস যাচাই করুন

ইনপুটটি 1-ভিত্তিক সূচী সহ স্ট্রিংগুলির একটি সেল অ্যারে এবং সংখ্যার একটি সারি ভেক্টর। আউটপুট ফাঁকা স্থান সহ ডান প্যাডযুক্ত।



2

জেলি , 14 বাইট

⁾^vḟ$€>”-T⁹ịƲ¦

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

পুরো প্রোগ্রাম।

এটি অত্যধিক দীর্ঘ অনুভূত হয় ...


আমি জেলি জানি না তাই এটি নিজেই কীভাবে চেষ্টা করা যায় তা বুঝতে পারি না তবে আপনি কি ”-প্রথম যুক্তি ( ³?) এর নামটি দিয়ে প্রতিস্থাপন করতে পারবেন, এটির -পরিবর্তে একটি দিয়ে গ্যারান্টিযুক্ত ?
শেগি

@ শেগি নোপ, কারণ >ভেক্টরাইজস। আপনি দেখতে পাচ্ছেন যে এটি কাজ করে না
এরিক আউটগল্ফার

আহা, আমি যা চেষ্টা করেছি ঠিক তাই :) এটি আমার জেলি জ্ঞানের অভাব কারণ কিনা তা জানতাম না। মনে করবেন না প্রথম যুক্তির প্রথম চরিত্রটি পাওয়ার জন্য অন্তর্নির্মিত কোনও একক অক্ষর রয়েছে?
শেগি

@Shaggy Erm ... কমান্ড লাইন আর্গুমেন্ট জন্য শুধুমাত্র বিল্ট-ইন আছে ³, , , এবং , পঞ্চম CLAs এ যথাক্রমে প্রথম জন্য। নির্দিষ্ট অন্তর্নির্মিত কার্য উপস্থিত রয়েছে কিনা তা জানতে আপনি পরমাণু পৃষ্ঠাটি পড়তে পারেন ।
এরিক আউটগল্ফার

আহ, ভাল, একটি শট মূল্য ছিল। একদিন, আমি হবে জেলি মধ্যে সঠিকভাবে ডুব।
শেগি

2

স্ট্যাক্স , 13 বাইট

¿╫╦ÜΦ1▌X○!ΩTæ

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

এটি 0-ভিত্তিক সূচকগুলি ব্যবহার করে।

  1. রেজেক্সের সমস্ত সূচকগুলি সন্ধান করুন [v^]
  2. মধ্যে সূচক সূচক অ্যারে ইনপুট ব্যবহার করে।
  3. প্রতিটি ফলাফলের সাথে ইনপুটটির এসকি কোড সহ জিওর করুন 40। এই xor('v', '^')

2

পরিষ্কার , 93 বাইট

import StdEnv
$i=foldl(\s c=s++[if(any((==)(sum[1\\k<-s|k>'-']))i&&c>'-')if(c>'^')'^''v'c])[]

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

$ :: [Int] -> [Char] -> [Char]সূচকগুলির শূন্য-সূচকযুক্ত তালিকা গ্রহণ করে ফাংশনটি সংজ্ঞা দেয় যা স্ট্রিং নেয় এবং পরিবর্তিত স্ট্রিংটি ফেরত দেয়।


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 101 98 93 91 77 67 বাইট

a=>s=>[...s].map(c=>t+=c>s?"^v"[a.includes(i++)^c>"^"]:c,t=i=``)&&t

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

শেগির পরামর্শ অনুসারে 10 বাইট, থ্যাঙ্কস ।

আমার পাইথন উত্তর বন্দর । গল্ফিং জাভাস্ক্রিপ্ট অভ্যস্ত না!



অথবা 67 67 বাইট অগ্রাহ্য করে অর্নউল্ড আমাকে দিয়েছিল।
শেগি

@ শেগি: টিপস প্রশংসা! এখন পড়া হচ্ছে ...
চ্যাস ব্রাউন


1

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

কোড

x=>y=>{x.map(i=>eval(`y=y.replace(/(((v|\\^)[^^v]*){${i}})(v|\\^)/,(a,b,c,d,e)=>b+(e<"v"?"v":"^"))`));return y}

F (x) (y) ফর্ম্যাটে ইনপুট নেয় যেখানে x সূচক এবং y হল সুইচবোর্ড। সূচকগুলি 0 সূচকযুক্ত

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

ব্যাখ্যা

প্রতিটি সূচকের জন্য

x.map(i=>...

রেগেক্সটি তৈরি করুন যা সূচকটি +1 ম "^" বা "ভি" সন্ধান করে

`.../(((v|\\^)[^^v]*){${i}})(v|\\^)/...`

বিপরীত চিহ্ন "v" <-> "^" দিয়ে প্রতিস্থাপন করতে একটি স্ট্রিংয়ের মধ্যে এটি সন্নিবেশ করুন

y=y.replace(...,(a,b,c,d,e)=>b+(e<"v"?"v":"^"))

তারপরে স্ট্রিংটিকে একটি ফাংশন হিসাবে মূল্যায়ন করুন

eval(...)

সূচীগুলিতে স্যুইচ করতে পুনরাবৃত্তি করার পরে, স্যুইচবোর্ডটি ফিরে আসুন

return y

1

জেলি , 17 বাইট

⁾^vK;`©⁹e€ky@€⁸¦®

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

সূচকগুলি প্রথম হিসাবে এবং দ্বিতীয় আর্গুমেন্ট হিসাবে স্ট্রিং করে একটি সম্পূর্ণ প্রোগ্রাম। উল্লিখিত সুইচগুলি উল্টিয়ে আউটপুট মুদ্রণ করে।


1

রেটিনা 0.8.2 , 66 62 বাইট

\d+
$*
T`v^`^v`.(?<=\b(?(3)$)(?<-3>1)+(,1+)*(-|¶|(v|\^))+)
1A`

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। 1-ইন্ডেক্স। ব্যাখ্যা:

\d+
$*

ইনপুট নম্বরগুলি আনারিতে রূপান্তর করুন।

T`v^`^v`.(?<=\b(?(3)$)(?<-3>1)+(,1+)*(-|¶|(v|\^))+)

সম্পত্তির সাথে vএবং ^সমস্ত অক্ষরের মধ্যে লিপ্যন্তরেখা যে এতক্ষণ এর vs এবং ^এর সংখ্যার (অন্তর্ভুক্ত) ইনপুট সংখ্যার মধ্যে একটির সমান।

1A`

ইনপুট নম্বর মুছুন।


1

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

⭆η⎇№θ⌕ΦLη№v^§ηλκ§v^⁼vιι

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

 η                      Input string
⭆                       Map over characters and join
  ⎇                     If
   №                    Count of (i.e. exists)
     ⌕                  Index of
               κ        Current index in
       L                Length of
        η               Input string
      Φ                 Implicit range filtered by
         №              Count of (i.e. exists)
             η          Input string
            §           Indexed by
              λ         Current value
          v^            In literal string `v^`
    θ                   In input list
                 v^     Then literal `v^`
                §       Indexed by
                     ι  Current character
                   ⁼    Equal to
                    v   Literal `v`
                      ι Else current character


1

1
@ ভেস্কাহ খালি কেস অন্তর্ভুক্ত করার জন্য আপডেট হয়েছে
অজ্ঞতার


1

জাপট , 16 14 বাইট

Ëc^#(*(D>V©øT°

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

Ë>V©øT° ?Dc^#(:D     :Implicit input of multi-line string U & integer array V
Ë                    :Map each D in U
 >V                  :  Greater than V? (Coerces V to a string and, conveniently, all digits are > "\n" & "-" and < "^" & "v")
   ©                 :  Logical AND with
    ø                :  Does V contain
     T°              :    T (initially 0) postfix incremented
        ?            :  If true
         Dc          :  Charcode of D
           ^#(       :  XOR with 40
              :D     :  Else D

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