একটি ডোমিনো প্রভাব লিখুন


25

কয়েকটি ইউনিকোড অক্ষর ব্যবহার করে একটি ফাংশন লিখুন যা তিনটি পরামিতি গ্রহণ করে:

  • ডোমিনোজের মোট সংখ্যা
  • nডমিনো আক্রান্ত
  • আক্রান্ত ডোমিনোর শীর্ষ দিক ( 0বা Lবাম দিকে, 1বা Rডানদিকে)

একবার কোনও ডোমিনো টপল হয়ে গেলে, এটি অবশ্যই একই দিকের অবশিষ্ট ডোমিনোসকে টপল করতে হবে।

আপনার |স্থায়ী ডোমিনোর প্রতিনিধিত্ব করে \এবং /ডমিনোকে বাম এবং ডানে যথাক্রমে উপস্থাপিত করে আউটপুট করা উচিত ।

উদাহরণ

10, 5, 1ফিরে আসা ||||//////
6, 3, 0উচিত\\\|||


তৃতীয় প্যারামিটারটি স্ট্রিং হওয়া উচিত বা কোনও বুল / ইনট 0: বাম, 1: ডান মতো করবে?
ব্যবহারকারী 80551

আপনার উদাহরণ থেকে বোঝা যায় যে যদি 10 ডমিনো থাকে এবং 5 টি ডান ঠোকরানো হয়, তবে আমাদের দশটি ডমিনোয় ছয়টি ছুঁড়ে দেওয়া উচিত।
অ্যালগরিদমশর্ক

1
@ অ্যালগোরিদমশার্ক আমার মনে হয় পঞ্চম ডোমিনো ঠিকঠাক পেলে আমাদের ফলাফলটি দেখা উচিত।
ব্যবহারকারী 80551

@ rybo111 আপনি কি তৃতীয় প্যারামিটারটিকে পূর্বনির্মাণ হিসাবে মঞ্জুরি দিতে পারবেন যা তুলনামূলক ক্রিয়াকলাপকে সংক্ষিপ্ত করে তুলতে পারে? কেবল এর if(third_parameter)পরিবর্তেif(third_paramter=='l')
ব্যবহারকারী 80551

আমরা কি পরামিতিগুলির ক্রম চয়ন করতে পারি?
জাস্টিন

উত্তর:


14

রুবি, 38 (46) অক্ষর

e=->n,k,r{k-=r;'\|'[r]*k+'|/'[r]*n-=k}

এই ফাংশনটি একটি পূর্ণসংখ্যা হিসাবে 1ডানদিকে নেয় ( ডানদিকে, 0বাম দিকে)। একটি স্ট্রিং লাগে এমন ফাংশনটি 8 টি অক্ষর দীর্ঘ হয়:

d=->n,k,r{n-=k;r<?r??\\*k+?|*n :?|*~-k+?/*-~n}

ব্যবহারের উদাহরণ:

puts e[10, 5, 1] # or d[10, 5, 'r']
||||//////
puts e[10, 5, 0] # or d[10, 5, 'l']
\\\\\|||||

দ্বিতীয় উদাহরণে কেন কেবল 5 টি ডোমিনোস ছিটকে গেছে?
ক্লাইড লোবো

1
@ ক্লাইডলোবো কারণ আপনি 5 নম্বরে শুরু করেন এবং বাম দিকে ডোমিনোকে নক করেন, যা ফলস্বরূপ 4 টি ডোমিনোসকে তার বাম দিকে ছুঁড়ে ফেলেছে 5.. প্রথম উদাহরণে, পজিশনে শুরু করে 6 ডোমিনয়েস ধরে: এক অবস্থান 5 এ 5 এর ডানদিকে।
ভেন্টোরো

8

হাস্কেল, 70

f R i l=(i-1)#'|'++(l-i+1)#'/'
f L i l=i#'\\'++(l-i)#'|'
(#)=replicate

ধরে নিচ্ছি যে কোনও ধরণের দিকনির্দেশ রয়েছে , এতে আর এবং এল নির্মাণকারী রয়েছে ।


8

জে - 32 26 চর

জে একটি তালিকা ব্যবহার না করে দুটিরও বেশি যুক্তি পরিচালনা করতে পারে না এবং এটি বক্সিং ছাড়া অ-সমজাতীয় তালিকাগুলি পরিচালনা করতে পারে না। সুতরাং তিনটি পূর্ণসংখ্যার তালিকা হিসাবে ইনপুট থাকা আদর্শ। প্যারামিটার ক্রমটি হ'ল স্ট্যান্ডার্ড একের বিপরীত: বাম দিকে 0 বা ডানদিকের জন্য 1, তারপরে অবস্থান এবং তারপরে ডোমিনোজের মোট সংখ্যা। এর কারণ হ'ল জে ডান থেকে বামে তাদের মধ্য দিয়ে যেতে হবে।

{`(('|/\'{~-@>:,:<:)1+i.)/

যা চলছে তা এখানে। F`G/একটি তালিকার প্রয়োগ x,y,zমূল্যায়ন করবে x F (y G z)y G zডোমিনোসকে পচে যেতে পারে এমন দুটি সম্ভাব্য উপায়েই নির্মাণ করে এবং তারপরে দু'য়ের মধ্যে কোনটি Fব্যবহার xকরতে হবে তা নির্বাচন করতে ব্যবহার করে।

নীচে জে আরইপিএল এর সাথে পিছনে পিছনে রয়েছে যা ব্যাখ্যা করে যে কীভাবে ফাংশনটি একসাথে তৈরি করা হয়েছে: ইনডেন্টড লাইনগুলি আরপিএলের ইনপুট, এবং প্রতিক্রিয়াগুলি বাম মার্জিনের সাথে ফ্লাশ হয়। মনে রাখবেন যে জে প্যারেন না থাকলে ডান থেকে বামে কঠোরভাবে মূল্যায়ন করে:

   1 ] 3 (]) 10            NB. ] ignores the left argument and returns the right
10
   1 ] 3 (] 1+i.) 10       NB. hook: x (F G) y  is  x F (G y)
1 2 3 4 5 6 7 8 9 10
   1 ] 3 (>: 1+i.) 10      NB. "greater than or equal to" bitmask
1 1 1 0 0 0 0 0 0 0
   1 ] 3 (-@>: 1+i.) 10    NB. negate
_1 _1 _1 0 0 0 0 0 0 0
   1 ] 3 (<: 1+i.) 10      NB. "less than or equal to"
0 0 1 1 1 1 1 1 1 1
   1 ] 3 ((-@>:,:<:)1+i.) 10          NB. laminate together
_1 _1 _1 0 0 0 0 0 0 0
 0  0  1 1 1 1 1 1 1 1
   1 ] 3 (('|/\'{~-@>:,:<:)1+i.) 10   NB. turn into characters
\\\|||||||
||////////
   1 { 3 (('|/\'{~-@>:,:<:)1+i.) 10   NB. select left or right version
||////////
   {`(('|/\'{~-@>:,:<:)1+i.)/ 1 3 10  NB. refactor
||////////
   {`(('|/\'{~-@>:,:<:)1+i.)/ 0 3 10
\\\|||||||

কয়েকটি অক্ষর ব্যয় করে আমরা অর্ডারটিকে স্ট্যান্ডার্ড অর্ডার করতে পারি: কেবল @|.ফাংশনটির শেষে যুক্ত করুন :

   |. 10 3 1
1 3 10
   {`(('|/\'{~-@>:,:<:)1+i.)/@|. 10 3 1
||////////

দিকনির্দেশের জন্য স্ট্রিং আর্গুমেন্টের সাথে এটি খাপ খাইয়ে নেওয়া আরও বেশি ব্যয়বহুল।


আমি জানি আপনি এই উত্তরটি লেখার কিছুক্ষণ পরে গেছে, তবে এটি কাঠামোগতভাবে তৈরি করার পদ্ধতিটি খুব দুর্দান্ত। আপনি কীভাবে আধ্যাত্মিক ব্যবহারগুলি করেছেন /এবং আপনি দুটি আউটপুট তৈরি করেন এবং পছন্দসইটি নির্বাচন করেন সে উপায়টি আমি সত্যিই পছন্দ করি । আমি অনুভব করি যে আমার এটির প্রাপ্য স্বীকৃতির অভাব রয়েছে বলে মনে হচ্ছে।
কোলে

@ কোল যা বলেছিল, আমি অদ্ভুত ছিলাম।
ফ্রাউনফ্রগ

7

পাওয়ারশেল, 66

filter d($n,$k,$d){"$('\|'[$d])"*($k-$d)+"$('|/'[$d])"*($n-$k+$d)}

সম্ভবত অন্য প্রত্যেকের একই ধারণা ছিল।

  • দিক প্যারামিটার হিসাবে 0 বা 1 নেয় (যথাক্রমে বাম এবং ডানদিকে)

6

গল্ফস্ক্রিপ্ট (44 53 )

আমার প্রথম গল্ফস্ক্রিপ্ট প্রোগ্রাম। আমার এটির চেয়ে বেশি দীর্ঘ পথ নিয়েছে এবং সম্ভবত আরও চৌকস, আরও সংক্ষিপ্ত উপায়ে করা যেতে পারে (আমি নিশ্চিত কেউ এটি প্রমাণ করবে :)):

:d;:j;:^,{:x j<d&'\\'{x^j)->d!&'/''|'if}if}%

একটি নমুনা ইনপুট হয় 10 5 0

Ungolfed:

:d;:j;:^      # save input in variables and discard from stack, except total length ^
,             # create an array of numbers of length ^
{             # start block for map call
  :x          # save current element (= index) in variable
  j<          # check whether we are left of the first knocked over domino
  d           # check whether the direction is to the left
  &           # AND both results
  '\\'        # if true, push a backslash (escaped)
  {           # if false, start a new block
    x^j)->    # check whether we are on the right of the knocked over domino
    d!        # check whether the direction is to the right
    &         # AND both results
    '/'       # if true, push a slash
    '|'       # if false, push a non-knocked over domino
    if
  }
  if
}%            # close block and call map

1
প্রুফ সম্পন্ন ;-) যদিও আমি এখনও আমার সমাধানটিতে খুশি নই।
হাওয়ার্ড

1
কিছু টিপস: আপনি চয়ন করতে পারেন dহতে 0/ 1পরিবর্তে 'l'/ 'r'যা আপনি কিছু খাটো কোড দেয়। অন্যথায়, আপনি d'l'=যদি কোনও ভেরিয়েবল সঞ্চয় করে থাকেন তবে এটির সাথে দ্বিতীয় তুলনার পরিবর্তে এটি ব্যবহার করতে পারেন d। শব্দটির পরিবর্তে x i jআপনি যদি কোনও অ-অক্ষর পরিবর্তিত নাম ব্যবহার করেন তবে উভয় শ্বেতস্পেস সংরক্ষণ করতে পারেন i
হাওয়ার্ড

টিপসটির জন্য ধন্যবাদ! আমি বেছে নিয়েছি 'l'/ 'r'কারণ সেই সময়ে আমি এখনও দেখতে পেলাম না যে আমরা পূর্ণসংখ্যা ব্যবহার করতে পারছি। অ-অক্ষরসংক্রান্ত কৌশলটি চতুর, ধন্যবাদ! উত্তর আমি পরে আপডেট করব।
ইনগো বার্ক

4

গল্ফস্ক্রিপ্ট, 28 23 টি অক্ষর

'\\'@*2$'|/'*$-1%1>+@/=

স্ট্যাকের শীর্ষে যুক্তিগুলি, অনলাইনে চেষ্টা করুন :

> 10 5 1
||||//////

> 10 5 0
\\\\\|||||

অ্যামেজিং। এই সমস্ত গল্ফস্ক্রিপ্ট সমাধানগুলি থেকে শিখতে ভালোবাসুন :)
ইনগো বার্ক

4

পাইথন - 45 52

এটি 1ডান এবং 0বাম জন্য প্রয়োজন ।

x=lambda n,k,d:'\\|'[d]*(k-d)+"|/"[d]*(n-k+d)

এখানে একটি সংস্করণ যা লাগে rএবং lএ সঠিকভাবে 58 :

def x(n,k,d):d=d=='r';return'\\|'[d]*(k-d)+"|/"[d]*(n-k+d)

কিছু ব্যবহারের উদাহরণ ...

>>> print(x(10,3,0))
\\\|||||||
>>> print(x(10,3,1))
||////////
>>> print(x(10,5,1))
||||//////
>>> print(x(10,5,0))
\\\\\|||||
>>> print(x(10,3,0))
\\\|||||||

4

জেএস (ইএস 6) - 79 74 72 65 62

@ রাইডারস্কোরকে ধন্যবাদ!

3 য় পরম হ'ল বুলিয়ান (0: বাম / 1: ডান)

d=(a,b,c)=>"\\|"[a-=--b,c].repeat(c?b:a)+"|/"[c].repeat(c?a:b)

// Test
d(10,3,1); // => "||////////"
d(10,3,0); // => "\\\\\\\\||"

1
এই এন্ট্রি ECMAScript 6: D
bebe এর

@bebe haha, এবং এটি এর চূড়ান্ত রূপও নয়। ES6 খুব নোংরা হতে পারে।
xem

1
65:d=(a,b,c)=>"\\"[r="repeat"](!c&&a-b+1)+"|"[r](--b)+"/"[r](c&&a-b)
nderscore

1
মহান! আমি এই ক্রেজিটি জিনিসটিও পেয়েছি তবে এটি দীর্ঘ (67): d = (a, b, c, d = a-b + 1) => "\\ |" [গ] .আরপীট (সি? বি -1: ডি) ) + + "| /" [গ] .repeat (গ ঘ: b-1)?
xem

আমি মনে করি না রিপিট এলিয়াসিংয়ের পক্ষে মূল্যবান। [r='repeat'][r]15 অক্ষর। .repeat.repeat14 টি অক্ষর
edc65

3

পাইথন 2/3 - 54

বিধিটিতে এটি সর্বশেষে যুক্ত করা বেশ সুন্দর ছিল ('এল' / 'আর' এর পরিবর্তে 0/1)। খনিটি বিদ্যমান অজগর সমাধানের তুলনায় আসলে ছোট। 0 টি বাম, 1 টি সঠিক

def f(a,b,c):d,e='\|/'[c:2+c];h=b-c;return d*h+e*(a-h)

# Usage:
print(f(10,5,1)) # => ||||//////
print(f(10,5,0)) # => \\\\\|||||

3

হাস্কেল , 42 বাইট

(n%k)b=["\\|/"!!(b-div(k-b-c)n)|c<-[1..n]]

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

মত ইনপুট লাগে (%) n k bজন্য ndominos, k'ম ডমিনো পতন, নির্দেশ b

প্রতিটি অবস্থানে চরিত্র অনুসন্ধান করে cছোটো থেকে 1থেকে nঅক্ষর সূচক 0, 1, বা 2 গনা একটি গাণিতিক এক্সপ্রেশন ব্যবহার করে।

এখান থেকে পরীক্ষার মামলা নেওয়া হয়েছে


হাস্কেল , 44 বাইট

(n%k)b=take n$drop(n+n*b+b-k)$"\\|/"<*[1..n]

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

একটি আকর্ষণীয় কৌশল যা কিছুটা দীর্ঘতর হয়েছিল। প্রতিটি চিহ্নের একটানা অনুলিপিগুলির "\\|/"<*[1..n]সাথে স্ট্রিং উত্পন্ন করে n, তারপরে nগণিতগতভাবে নির্ধারিত শুরুর অবস্থানের সাথে সামঞ্জস্যপূর্ণ অক্ষরের একটি টুকরো নেয় ।


2

পাইথন 2.7, 68 65 61 59 58 অক্ষর

d=1বাম এবং d=0ডান জন্য ব্যবহার করুন

f=lambda a,p,d:['|'*(p-1)+'/'*(a-p+1),'\\'*p+'|'*(a-p)][d]

দ্রষ্টব্য: এটি আরও গল্ফ করার জন্য @ দ্যারিয়ারকে ধন্যবাদ।


1
কেন হবে না d and'\\'...or'/'...?
seequ

এছাড়াও আপনি কাজ করতে পারে('\\'...,'/'...)[d]
seequ

@ আরেআর আমার এই দুটি তালিকার দরকার পড়ে two
ব্যবহারকারী 80551

আমি তাই মনে করি না. f=lambda a,p,d:('|'*(p-1)+'/'*(a-p+1),'\\'*p+'|'*(a-p))[d]
seequ

@TheRare Also, I don't think your code works when falling left.আপনি কি প্রমাণ করার জন্য একটি পরীক্ষা কেস দিতে পারেন?
ব্যবহারকারী 80551

2

জাভাস্ক্রিপ্ট, 46 টি অক্ষর

0 = l এবং 1 = r করতে প্রতারণার মতো মনে হয় তবে রয়েছে। এটি একটি সামান্য পুনরাবৃত্তি সঙ্গে সঙ্কুচিত।

f=(a,p,d)=>a?'\\|/'[(p-d<1)+d]+f(a-1,p-1,d):''

সম্পাদনা: একটি স্পষ্ট চরিত্র মিস হয়েছে


2

জাভাস্ক্রিপ্ট (ES6) 61 63

সম্পাদনা করুন এটা বগী ছিল - আমার উপর লজ্জা।

@ এক্সেম থেকে আলাদা না, তবে এটি নিজেই খুঁজে পেয়েছি এবং এটি আরও খাটো। বাম / ডানদিকে প্যারামিটার ডি 0/1

F=(a,p,d,u='|'.repeat(--p),v='\\/'[d].repeat(a-p))=>d?u+v:v+u

টেস্ট ফায়ারফক্স কনসোল

for(i=1;i<11;i+=3) console.log('L'+i+' '+F(10,i,0) + ' R'+i+' '+ F(10,i,1))

আউটপুট

L1 \\\\\\\\\\ R1 //////////
L4 \\\\\\\||| R4 |||///////
L7 \\\\|||||| R7 ||||||////
L10 \||||||||| R10 |||||||||/

1
এটা করা উচিত --p?
nderscore

@ আন্ডারস্কোর হ্যাঁ এটি করা উচিত, পরামিতিগুলি ভুল হওয়া উচিত, আমাকে বোকা।
edc65

2

পার্ল, 67 65 অক্ষর

sub l{($t,$p,$d)=@_;$p-=$d;($d?'|':'\\')x$p.($d?'/':'|')x($t-$p)}

প্রথম তিনটি প্যারাম (সম্পূর্ণ, অবস্থান, দিক হিসাবে পূর্ণসংখ্য [0 বাম, 1 ডান]] বরাদ্দ করুন। অতিরিক্ত ইথারে যায়। যদি আমরা ডান দিকে যাচ্ছি তবে অবস্থান থেকে 1 টি বিয়োগ করুন যাতে এক্স পজিশনে থাকা ডোমিনোও উল্টে যায়।


1
প্রতিস্থাপন $p--if$dসঙ্গে $p-=$dদুটি অক্ষর :) হারান
চীনা Perl বর্বর

2

হাস্কেল , 57 বাইট

এই টিপটির জন্য 4 বাইট সংরক্ষণ করা হয়েছে thanks

f 0 b _=[]
f a b c=last("|/":["\\|"|b>c])!!c:f(a-1)(b-1)c

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

হাস্কেল , 69 61 60 58 বাইট

(0!b)_=[]
(a!b)c|b==c=a!b$c+1|1>0="\\|/"!!c:((a-1)!(b-1))c

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

খুব জটিল উত্তর নয় তবে এটি বিদ্যমান হাস্কেল উভয় উত্তরকেই পরাজিত করে।



2

হাস্কেল , 51 বাইট

f a b c=("\\|"!!c<$[1..b-c])++("|/"!!c<$[b-c..a-1])

a= ডোমিনোজের সংখ্যা, স্পর্শযুক্তটির b1 টি ভিত্তিক সূচক, c= দিক ( 0বাম এবং 1ডানদিকে)।

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


একটি পোতা অপারেটর ডিফাইনিং এছাড়াও আরো দুই ইনপুট জন্য কাজ করে: (a#b)c= ...
লাইকোনি

1

পিএইচপি - 64

function f($a,$b,$c){for($w='\|/';++$i<=$a;)echo$w[$c+($i>$b)];}

একটি সাধারণ লুপ এবং চরিত্রের প্রতিধ্বনি।

একটি উত্পন্ন করে Notice: Undefined variable: i, এখানে অন্য সংস্করণটি ত্রুটি (65 টি অক্ষর) বন্ধ করে দিচ্ছে:

function f($a,$b,$c){for($w='\|/';@++$i<=$a;)echo$w[$c+($i>$b)];}

এবং কোনও ত্রুটি ছাড়াই একটি সংস্করণ (69 টি অক্ষর):

function f($a,$b,$c){for($w='\|/',$i=0;++$i<=$a;)echo$w[$c+($i>$b)];}

পিএইচপি অন্যান্য ফাংশন:

sprintf/ printfপ্যাডিং

function f($a,$b,$c){printf("%'{${0*${0}=$c?'|':'\\'}}{$a}s",sprintf("%'{${0*${0}=$c?'/':'|'}}{${0*${0}=$a-$b+$c}}s",''));}

প্যাডিং str_pad/ str_repeatফাংশন মাধ্যমে

function f($a,$b,$c){$f='str_repeat';echo$f($c?'|':'\\',$b-$c).$f($c?'/':'|',$a-$b+$c);}
function f($a,$b,$c){echo str_pad(str_repeat($c?'|':'\\',$b-$c),$a,$c?'/':'|');}

উভয় printfএবং str_repeatফাংশন ব্যবহার করে

function f($a,$b,$c){printf("%'{${0*${0}=$c?'|':'\\'}}{$a}s",str_repeat($c?'/':'|',$a-$b+$c));}
function f($a,$b,$c){$w='\|/';printf("%'$w[$c]{$a}s",str_repeat($w[$c+1],$a-$b+$c));}

1

স্ক্যালাল 75 টি অক্ষর

def f(l:Int,p:Int,t:Char)=if(t=='l')"\\"*p++"|"*(l-p) else "|"*(l-p):+"/"*p

1

সিজোম - 20

q~
:X-_"\|"X=*o-"|/"X=*

প্রধান কোডটি দ্বিতীয় লাইনে রয়েছে, প্রথম লাইনটি কেবল স্ট্যান্ডার্ড ইনপুট থেকে পরামিতিগুলি পাওয়ার জন্য (অন্যথায় আপনাকে কোডটিতে প্যারামিটারগুলি রাখা দরকার)।

এটি http://cjam.aditsu.net/ এ চেষ্টা করুন

উদাহরণ:

12 4 1
|||/////////

8 5 0
\\\\\|||

ব্যাখ্যা:

:Xশেষ প্যারামিটারটি (0/1 দিক) পরিবর্তনশীল এক্স
--কে নক-ওভার পজিশন থেকে X বিয়োগ করে, অক্ষরের প্রথম অনুক্রমের দৈর্ঘ্য অর্জন করে (আসুন আমরা এটিকে L বলি) প্রথমে ব্যবহারের
_জন্য L এর একটি অনুলিপি
"\|"X=অক্ষর পায়: \কারণ এক্স = 0 এবং |এক্স এর জন্য = 1
*অক্ষরটি পুনরাবৃত্তি করে এল বার
oস্ট্রিং আউট মুদ্রণ করে, স্ট্যাক থেকে সরিয়ে এটিকে
-ডোমিনোজের সংখ্যা থেকে বিয়োগ করে, অক্ষরের দ্বিতীয় ক্রমের দৈর্ঘ্য অর্জন করে (আসুন আমরা এটি আর বলি)
"|/"X=চরিত্রটি পায় পরবর্তী ব্যবহার করুন: |এক্স = 0 এর /জন্য এবং এক্স = 1 এর জন্য
*অক্ষরটি পুনরাবৃত্তি করে


1

কমন লিস্প

এটি কোনও কোড গল্ফে জিততে পারে না, তবে এটি কমন লিস্পের ন্যায়সঙ্গত বিন্যাসের নির্দেশকে হাইলাইট করে:

(lambda (n p d &aux (x "\\|/"))
   (format t "~v,,,v<~v,,,v<~>~>" n (aref x d) (+ d (- n p)) (aref x (1+ d))))

পাটিগণিতটি খারাপ নয়: nএটি ডোমিনোজের মোট সংখ্যা; pপ্রথম টপলড ডোমিনোর অবস্থান; dহয় 0বা হয় 1, বাম এবং ডান উপস্থাপন করে (মন্তব্যে অনুমোদিত) এবং এতে একটি সূচক হিসাবে ব্যবহৃত হয় x; xএকটি স্ট্রিং \, |এবং /। বিন্যাসের স্ট্রিংয়ে দুটি (নেস্টেড) ন্যায্যতা নির্দেশিকা ব্যবহার করা হয়, যার প্রত্যেকটি একটি প্যাডিং চরিত্রের জন্য অনুমতি দেয়। এভাবে:

(dotimes (d 2)
  (dotimes (i 10)
    ((lambda (n p d &aux (x "\\|/"))
       (format t "~v,,,v<~v,,,v<~>~>" n (aref x d) (+ d (- n p)) (aref x (1+ d))))
     10 (1+ i) d)
    (terpri)))

\|||||||||
\\||||||||
\\\|||||||
\\\\||||||
\\\\\|||||
\\\\\\||||
\\\\\\\|||
\\\\\\\\||
\\\\\\\\\|
\\\\\\\\\\
//////////
|/////////
||////////
|||///////
||||//////
|||||/////
||||||////
|||||||///
||||||||//
|||||||||/

1

পিএইচপি, 89 অক্ষর

function o($a,$p,$d){for($i=0;$i<$a;$i++)echo$d==0?($i+1>$p)?'|':'\\':($i+1<$p?'|':'/');}

আমি পিএইচপি ভালবাসি কারণ।

সম্পাদনা: নিম্নলিখিত কোডটিও একই কাজ করে।

function dominoes ($number, $position, $direction) {
    for ($i=0; $i<$number; $i++){
        if ($direction==0) {
            if (($i+1) > $position) {
                echo '|';
            } else {
                echo '\\';
            }
        } else {
            if (($i+1) < $position) {
                echo '|';
            } else {
                echo '/';
            }
        }
    }
}

আরও বিশদ সংস্করণ পেয়েছেন?
মার্টিজন

1
@ মার্তিজন, আমি একটি পোস্ট অন্তর্ভুক্ত করার জন্য আমার পোস্ট সম্পাদনা করেছি।
ট্রাইবাল চিফ

এখন আমি দেখতে পাচ্ছি এটি কী করে। খুব বেশি অভিনব কিছু নয়, তবে +1 :)
মার্টিজন

ধন্যবাদ! @ এনপ্লয়ের সমাধান (গুলি) দেখতে অভিনব হলেও!
ট্রাইবালচিফ

1) অপ্রয়োজনীয় প্রথম বন্ধনী: golfing কয়েকটি পরামর্শ দেওয়া ($i+1>$p)। 2) আপনার ত্রৈমাসিক অভিব্যক্তিটি $d?($i+1<$p?'|':'/'):$i+1>$p?'|':'\\'আবার 3 টি বাইট সংরক্ষণ করে সংরক্ষণ করে। অথবা কেবল সরাতে ==0এবং বিপরীত দিকনির্দেশ। 3) $i++<$aআপনি $i++পোস্ট শর্তটি সরিয়ে ফেলতে পারেন এবং এর $iপরিবর্তে $i+1(-6 বাইট) ব্যবহার করতে পারেন । 4) $i=0প্রয়োজনীয় নয়; তবে --nআপনি এটি (-4 বাইট) অপসারণ করলে বিজ্ঞপ্তিগুলি (বিকল্প ) দমন করতে হবে।
তিতাস


1

05 এ বি 1 , 19 বাইট

αα©„\|³è×¹®-„|/³è×J

আমি এখনও এটি কিছুটা দীর্ঘ অনুভূতি বোধ করি তবে এটি কার্যকর হয় .. এবং যদি প্রাথমিক 23 বাইট সমাধানের সাথে আমার যদি ইফ-অন্য নির্মাণের সাথে সমাধান করা হয়েছিল, যা আমি তাড়াতাড়ি বাদ দিয়েছিলাম ...

ইনপুট অর্ডার চ্যালেঞ্জের মতো একই: মোট দৈর্ঘ্য, সূচক 1/ / 0বাম / ডানদিকে যথাক্রমে।

এটি অনলাইনে চেষ্টা করুন বা উভয় পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

α                     # Take the absolute difference of the first two (implicit) inputs
                      #  i.e. 10 and 5 → 5
                      #  i.e. 6 and 3 → 3
 α                    # Then take the absolute difference with the third (implicit) input
                      #  i.e. 5 and 1 → 4
                      #  i.e. 3 and 0 → 3
  ©                   # Store this number in the register (without popping)
   \|                # Push "\|"
      ³è              # Use the third input to index into this string
                      #  i.e. 1 → "|"
                      #  i.e. 0 → "\"
        ×             # Repeat the character the value amount of times
                      #  i.e. 4 and "|" → "||||"
                      #  i.e. 3 and "\" → "\\\"
         ¹®-          # Then take the first input, and subtract the value from the register
                      #  i.e. 10 and 4 → 6
                      #  i.e. 6 and 3 → 3
            „|/       # Push "|/"
               ³è     # Index the third input also in it
                      #  i.e. 1 → "/"
                      #  i.e. 0 → "|"
                 ×    # Repeat the character the length-value amount of times
                      #  i.e. 6 and "/" → "//////"
                      #  i.e. 3 and "|" → "|||"
                  J   # Join the strings together (and output implicitly)
                      #  i.e. "||||" and "//////" → "||||//////"
                      #  i.e. "///" and "|||" → "///|||"

0

সি ++ 181

#define C(x) cin>>x;
#define P(x) cout<<x;
int n,k,i;char p;
int main(){C(n)C(k)C(p)
for(;i<n;i++){if(p=='r'&&i>=k-1)P('/')else if(p=='l'&&i<=k-1)P('\\')else P('|')}
return 0;}

1
আপনি আসলে স্পষ্টভাবে প্রয়োজন হবে না return 0থেকে main
zennehoy

এটি আমার জন্য সংকলন করে না কারণ সিন এবং কোট বিশ্বব্যাপী নেমস্পেসে নেই - আপনি কোন সংকলকটি ব্যবহার করছেন? এছাড়াও, এটি না C(n)>>k>>pচেয়ে ছোট করা C(n)C(k)C(p)হবে? এবং যদি পি () এর জন্য সংজ্ঞাটি আর্গুমেন্টকে আরও শক্তিশালী করতে পারে তবে তা কি সমস্ত উদ্ধৃতিগুলির জন্য অক্ষর সংরক্ষণ করে না? এবং আপনি যখন পি 'এল' এবং 'আর' এর সাথে তুলনা করেন: 0 এবং 1 ছোট হবে - বিশেষত> 0 = '' আর 'এর পরিবর্তে 0 এবং' = '' এল 'এর পরিবর্তে <1 (ধরে নিচ্ছেন যে আপনি সংখ্যার পরিবর্তে সংখ্যার ব্যবহার করছেন ঠিকঠাক আর / এল - না হলে <'আর' = = '' এল 'এর চেয়ে কম এবং>' এল 'এখনও ==' আর 'এর চেয়ে ছোট)
জেরি যেরেমিয়া

সিন এবং কাউট এর জন্য @ জেরি জেরেমিয়াকে "নেমস্পেস স্ট্যান্ড ব্যবহার করে" দরকার।
বেকসুবিলে

আমি জানি তবে যেহেতু এটি কেবলমাত্র দু'বার ব্যবহৃত হয় এটি ফাংশনগুলির যোগ্যতা অর্জনের জন্য কম। অন্তর্ভুক্ত ছাড়া কোনওভাবেই আমার সংকলকটিতে কাজ করে না।
জেরি যেরেমিয়া

0

পিএইচপি - 105,97 , 96

 function a($r,$l,$f){$a=str_repeat('|',$l-$f);$b=str_repeat($r?'/':'\\',$f);echo$r?$a.$b:$b.$a;}

উদাহরণ ফলাফল:

a(true,10,4);  -> \\\\||||||
a(false,10,5); -> |||||/////
a(false,10,2); -> ||||||||//

0

জাভাস্ক্রিপ্ট, 81 85 টি অক্ষর

ফাংশন ই (ক, খ, সি) {l = 'পুনরাবৃত্তি'; ডি = '|' [এল] (- এ-বি ++); রিটার্ন সি> 'কিউ'? ডি + "/" [এল] (খ): "\\" [ঠ] (খ) + D}

প্রথমবার কোডগল্ফ চেষ্টা করছিলাম, মজা করার জন্য ধন্যবাদ :)


স্ট্রিং রিপিট ES6 (ক্রোমে কাজ করে না) হিসাবে ES6 ফাংশন হিসাবে ফাংশনটিও সংশোধন করতে পারে।
ম্যাট

0

জাভাস্ক্রিপ্ট - 85 টি অক্ষর

function d(a,b,c){for(r=c?"\\":"/",p="",b=a-b;a--;)p+=c?a<b?"|":r:a>b?"|":r;return p}

1 = বাম, 0 = ডান

d(10,3,1)
\\\|||||||
d(10,3,0)
||////////
d(10,7,1)
\\\\\\\|||
d(10,7,0)
||||||////

0

ক্লোজার, ৮১ টি চর

(defn g[a,p,d](apply str(map #(nth "\\|/"(+(if(>= % (- p d)) 1 0) d))(range a))))

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