ডিভিআই সংযোগকারী পিন


23

বর্ণালীটির সহজ প্রান্তে এটি একটি কোড গল্ফ চ্যালেঞ্জ বলে মনে হচ্ছে। তবে আমি অনুভব করেছি যে এখানে কিছু মাইক্রো-অপটিমাইজেশন আনতে ভাল লাগবে।

আছে DVI এর সংযোগকারীগুলিকে তিনটি প্রাথমিক ধরনের DVI এর-এ (এনালগ), DVI এর-ডি (ডিজিটাল) এবং DVI এর-আমি (ইন্টিগ্রেটেড।): তদুপরি, DVI-D এবং DVI-I সংযোগকারীগুলির একক লিঙ্ক এবং দ্বৈত-লিঙ্ক সংস্করণ রয়েছে। এই পাঁচটি পৃথক সংযোগকারী প্রত্যেকে পৃথক পিনের সেট ব্যবহার করে।

এক প্রদত্ত A, D1, D2, I1, I2সংযোজকের টাইপ জন্য একটি আইডেন্টিফায়ার হিসেবে সংযোগকারী এর পিনের সংশ্লিষ্ট হওয়া ASCII উপস্থাপনা মুদ্রণ:

A:
#   #  # # #       # #
=====  # # #          
#   #  # #         # #

D1:
       # # #     # # #
=====  # # #     # # #
       # # #     # # #

D2:
       # # # # # # # #
=====  # # # # # # # #
       # # # # # # # #

I1:
#   #  # # #     # # #
=====  # # #     # # #
#   #  # # #     # # #

I2:
#   #  # # # # # # # #
=====  # # # # # # # #
#   #  # # # # # # # #

( X:লাইনগুলি আউটপুটের অংশ নয়, আপনার কেবল তিনটি লাইন মুদ্রণ করা উচিত))

আপনি STDIN, ARGV বা ফাংশন যুক্তির মাধ্যমে ইনপুট নিয়ে একটি প্রোগ্রাম বা ফাংশন লিখতে পারেন। Theচ্ছিক ট্রেইলিং লাইন ফিডের সাথে আউটপুট অবশ্যই STDOUT এ মুদ্রিত করতে হবে।

আপনি Aসংযোজকের দ্বিতীয় লাইনে পিছনের স্থানগুলি অন্তর্ভুক্ত করতে পারেন বা নাও করতে পারেন । আপনার অতিরিক্ত লিডিং বা ট্রেলিং স্পেস অন্য কোথাও ব্যবহার করা উচিত নয় ।

এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে।


আমার "I1"পরিবর্তে যেমন কোটগুলি ইনপুট লাগতে পারে I1?
ক্লাদিউ

অন্যান্য লাইনে স্থান অনুসরণের অনুমতি দেওয়া আছে কি?
গেল_নেটিভ

1
@ ক্লডিউ নোপ, দুঃখিত।
মার্টিন ইন্ডার

@ গন_নেটিভ এছাড়াও না, দুঃখিত, এটি পোস্টে যুক্ত হবে)।
মার্টিন ইন্ডার

উত্তর:


3

সিজেম, 79 70 বাইট

নটকির উত্তর থেকে অনুপ্রাণিত । এটি নিশ্চিত করে যে কোনও সাদা স্থান নেই (দ্বিতীয় লাইন ব্যতীত)

"VF­wGC}*D"176b6b" DG1A="f=r'1+2<"  "aer{_s" ="&\"# "?}%s23/Wf<N*

কোড অনুলিপি করতে এই লিঙ্কটি ব্যবহার করুন এসই স্ট্রিপগুলি অন-প্রিন্টযোগ্য অক্ষরগুলি।

প্রিন্টযোগ্য এএসসিআইআই রেঞ্জে 5 টি অক্ষর রয়েছে তবে একটি বাইটের মধ্যে ভাল (এএসসিআইআই কোড 255)

এটি কীভাবে কাজ করে :

"VF­wGC}*D"176b6b" DG1A="f=              "This effectively results into this string:"
                                        "D  D GGG11AGG=====  GGG11AAAD  D GGA11AGG";
r'1+2<                                  "Read the input, convert A to A1";
      "  "er                            "Replace the occurrences of above two characters"
                                        "with double space '  '";
            {_s" ="&\"# "?}%s           "Convert every non = and space character to '# '";
                             23/        "Divide the string into parts of 23 characters";
                                Wf<     "String last character from above parts";
                                   N*   "Join with new line";

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


16

পার্ল - 100 91 (1 পতাকা সহ)

-pডাবল-স্পেস ব্যবহার এবং হ্রাস করার জন্য নটকির ধারণাগুলি ব্যবহার করে । পেছনের জায়গাগুলি সরলকরণ নির্মূলকরণ।

#!perl -p
$x=$_|" qb";$_="dbd xxxqqqax#
=====bxxxqqqaaa!dbd xxaqqqax#";s/[$x]/  /g;s/\w/# /g;s/ !/
/

ইনপুট স্টিডিন থেকে আসে এবং কেবল সংযোগকারী প্রকারটি অবশ্যই কোনও পূর্ববর্তী লাইনের সাথে থাকা উচিত।


আগে:

$x=shift|" q";$_="d  d xxxqqqaxx
=====  xxxqqqaaa
d  d xxaqqqaxx";s/[$x]/  /g;s/\w/# /g;s/ $//mg;say

কমান্ড-লাইন আর্গুমেন্ট নেয়। Ungolfed:

# Read argument, transform A->aq, I1->iq, I2->is, D1->dq, D2->ds
$x=shift|" q";

# String compacted
$_ = "d  d xxxqqqaxx
=====  xxxqqqaaa
d  d xxaqqqaxx";

# Clear any pins with matching char in input
s/[$x]/  /g;
# Convert rest to '#'
s/\w/# /g;
# Eliminate trailing spaces
s/ $//mg;
say

2
প্যারামিটারটি পরিচালনা করার জন্য বুদ্ধিমান ধারণা। আপনি টেমপ্লেটটিতে $x=shift|" qb"ডাবল স্পেসের 3 টি উপস্থিতি যুক্ত এবং প্রতিস্থাপন করে 2 বাইট সংরক্ষণ করতে পারেন b। ইনপুট প্রসেসিংটিকে '-p' এ পরিবর্তন করা 7 অতিরিক্ত দেয় (পতাকাটি বিয়োগফল): $x=$_|""এবং চূড়ান্ত হওয়ার দরকার নেই say
নটকি

@ নটকি - ধন্যবাদ, আমি মিস করেছি!
গেল_নেটিভ

@ MartinBüttner - সমস্ত 3 লাইন স্পেস trailing হয়েছে, যদিও আমি বুঝতে পারলাম আমি থেকে যারা লাইনে চূড়ান্ত গৃহস্থালির কাজ রূপান্তর সহজেই প্রথম ও তৃতীয় লাইন ঠিক করতে পারবো xকরার #। তবে দ্বিতীয় লাইনে এখনও সব ক্ষেত্রে পিছনে স্থান রয়েছে। কারণ A, স্থানটি #অন্যান্য লাইনের চূড়ান্ত ছাড়িয়েও প্রসারিত হয়েছে (যা আমি মনে করি প্রযুক্তিগতভাবে অনুমোদিত)। কিন্তু জন্য I1, I2, ইত্যাদি। কিছু ক্ষেত্রে, এখনও একটি পিছনের স্থান রয়েছে যা যত্ন নেওয়া দরকার। আমি মনে করি এটির বাইরে আমি আরও কয়েকটি চরিত্র গল্ফ করতে পারি।
গেছে_নেটিভ

ওগো, আপনি ঠিক বলেছেন
মার্টিন ইন্ডার

9

পাইথন, 168 টি অক্ষর

t=raw_input()*2
Q="G   G  # # # 2 2 H # #\n=====  # # # 2 2 H H H\nG   G  # # H 2 2 H # #"
for A,B,N in('G0A','H0D','212'):Q=Q.replace(A,' #'[t[int(B)]in'I'+N])
print Q

একটি নতুন পদ্ধতির বলে মনে হচ্ছে। আমার কাছে স্ট্রিং রয়েছে:

G   G  # # # 2 2 H # #
=====  # # # 2 2 H H H
G   G  # # H 2 2 H # #

আমি প্রতিস্থাপন G, Hএবং 2ইনপুট উপর ভিত্তি করে।


5

জে, 153 121 119 অক্ষর

minified
('='(;/1,.i.5)}"_1' #'{~5 3 22$#:128#.32x-~3 u:'dt*`J%Q5"xjuH%Jv2uJ!H5 t*`J%@5Jp*uH%Jv2p*!H dp"')echo@{~I1`I2`D1`D2 i.<

তৃতীয় পদ্ধতির: বিট হিসাবে সমস্ত  এবং #এর একটি বিশাল পূর্ণসংখ্যার মধ্যে প্যাক করুন । =এরপরে যোগ করুন । এখনও অনেক সংযোগকারী ভেরিয়েন্টের প্রতিসাম্য ব্যবহার করে না।

Unminified
n =. 128 #. 32x -~ 3 u: 'dt*`J%Q5"xjuH%Jv2uJ!H5 t*`J%@5Jp*uH%Jv2p*!H dp"'
f =. ('=' (;/1,.i.5)}"_1 ' #' {~ 5 3 22 $ #: n) echo@{~ I1`I2`D1`D2 i. <

Minified (153)
[:echo@>({&(' #=',LF)&.:>;._2#;._1#:96#.32x-~3 u:' (0%dziqrDwbh5Ds6[gEl)_xkBS6?61m$1ne/v(]!&yW?_{K.S^X#Yn_d%O71KqXEw=I;meH>@eG2|2/gcR0'){~D1`D2`I1`I2 i.<

এছাড়াও একটি ফাংশন হিসাবে। বাইনারিগুলিতে টালাই করে এবং শূন্যগুলি দ্বারা পৃথক করে এই একটি একটি পরিবর্তনশীল দৈর্ঘ্যের বাইনারি কোডিং ব্যবহার করে। একটি সারিতে 0 টির অর্থ  , 1 টির #অর্থ 2 টির অর্থ =, 3 টির অর্থ নিউলাইন এবং 4 টি পাঁচটি স্ট্রিং একে অপরের থেকে পৃথক করে।

Ungolfed
s =. ' (0%dziqrDwbh5Ds6[gEl)_xkBS6?61m$1ne/v(]!&yW?_{K.S^X#Yn_d%O71KqXEw=I;meH>@eG2|2/gcR0'
f =. [: echo@> ({&(' #=',LF)&.:>;._2 #;._1 #: 96 #. 32x -~ 3 u:s) {~ D1`D2`I1`I2 i. <

4

মার্বেলাস, 281 বাইট / অক্ষর

minified:

00
]]
GG]]
IIJJJJ
:G
}0
++
>>
>X{0
/\{<{>
:H
}0
-Z
>E-2
-C//
{0
:I
23232003002023}023
LLMMMMNNRROOMMRRLL
0003
0300
NNNN
:J
}0}1
HH-2
KKKK
:K
}1}0
}1}0}0
PPPPQQ
:L
}020
}0202020
:M
20}020}020}0
:N
}0
}020
+W20
:O
3D3D3D3D3D}0
:P
}023}1230A
LLMMNNMM
:Q
2023}0230A
OOMMNNMM
:R
}0
\/0A

এই সময় লাগে D1, D2, I1, I2বা Astdin থেকে। ইনপুটতে নতুন লাইনের অনুসরণ করা alচ্ছিক। আউটপুট STDOUT এ চলেছে।

এই প্রোগ্রামটি সাববোর্ডগুলিকে কল করে যা সংযোগকারীগুলির অংশগুলি মুদ্রণ #করে, ইনপুটগুলির উপর নির্ভর করে হয় পূরণ করে বা ফাঁকা স্থান ছেড়ে দেয়।

এই উত্তর এখানে চেষ্টা করুন ; নলাকার বোর্ড প্রয়োজন।

মন্তব্য সহ:

00 .. ..
]] .. .. # get A/D/I
Gt ]] .. # pass into Gt; call PA if A or PrDI if D/I
PA Pr DI

# If 'A' is passed, a marble is emitted down
# Otherwise, marbles are sent left/right
# The value of the marble outputted is (I+1)/2, which creates a difference of 3
#   between D and I, the difference between a space and a #
:Gt
}0 .. ..
++ .. ..
>> .. ..
>X {0 ..
/\ {< {>

# Returns 0 if '1' is passed, and 3 if '2' is passed
:Ff
}0 ..
-Z ..
>E -2
-C //
{0 ..

# Prints connector A 
# Calls made: P1(23) P2(23) P2(20) P3(03) LF(00) P4(20) P2(23) LF(}0) P1(23)
#   P3(03) P3(00) P3(00) P3(03)
:PA
23 23 20 03 00 20 23 }0 23
P1 P2 P2 P3 LF P4 P2 LF P1
00 03 .. .. .. .. .. .. ..
03 00 .. .. .. .. .. .. ..
P3 P3 .. .. .. .. .. .. ..

# Prints connectors D0/D1/I0/I1
# }0 is either '1' or '2'
# }1 is either 32 or 35 (for D or I)
:PrDI
}0 }1
Ff -2
Li DI

# Helper for PrDI
# Calls made: L1(}1, }0) L2(}0) L1(}1, }0)
:LiDI
}1 }0 ..
}1 }0 }0
L1 L1 L2

# Prints '#   # ' (}0 = 0x23) or '      ' (}0 = 0x20)
:P1
}0 20 .. ..
}0 20 20 20

# Prints ' # # #' (}0 = 0x23) or '      ' (}0 = 0x20)
:P2
20 }0 20 }0 20 }0

# Prints ' # #' (}0 = 0x03) or '    ' (}0 = 0x00)
:P3
}0 ..
}0 20
+W 20

# Prints '===== ', }0 must be 0x20
:P4
3D 3D 3D 3D 3D }0

# Prints the top/bottom line of D/I connectors + newline
# Calls made: P1(}0) P2(23) P3(}1) P2(23) 
:L1
}0 23 }1 23 0A
P1 P2 P3 P2 ..

# Prints the middle line of D/I connectors + newline
# Calls made: P4(20) P2(23) P3(}0) P2(23)
:L2
20 23 }0 23 0A
P4 P2 P3 P2 ..

# Emits a newline (0x0A) regardless of input
:LF
}0 ..
\/ 0A

4

পার্ল 5: 105 (1 টি পতাকা সহ)

তবুও আরেকটি পার্ল সমাধান। প্যারামিটারের জন্য স্টিডিন ব্যবহার করে।

#!perl -p
@x=map$_?'#':$",!/D/,-/2/,!/A/,1,0;$_='040 33311233
=====433311222
040 33211233';s/\d/$x[$&] /g;s/ $//mg

4

জিএনইউ সেড, 116 বাইট

s/.*/&:#   #  33322433\n=====  33322444\n#   #  33422433/
/A/s/[42]/  /g
/1/s/2/  /g
/D/s/#/ /g
s/[2-4]/ #/g
s/.*://

আউটপুট:

$ echo "A
D1
D2
I1
I2"|sed -f dvi.sed
#   #   # # #       # #
=====   # # #          
#   #   # #         # #
        # # #     # # #
=====   # # #     # # #
        # # #     # # #
        # # # # # # # #
=====   # # # # # # # #
        # # # # # # # #
#   #   # # #     # # #
=====   # # #     # # #
#   #   # # #     # # #
#   #   # # # # # # # #
=====   # # # # # # # #
#   #   # # # # # # # #
$ 

3

জে, 198 194 157 অক্ষর

minified
3 22 echo@$'x   x  # # # x x x # #=====  # # # x x x x xx   x  # # x x x x # #'('x'I.@:=])}~(5 16$(#' #'$~#)"."0'4123212128262126290901824'){~D1`D2`I1`I2 i.<

একটি ফাংশন হিসাবে বাস্তবায়িত। নোট করুন যে ফাংশনটি একটি ট্রেন, যার অর্থ এটি ব্যবহারের জন্য কোনওটিকে বন্ধনী দ্বারা ঘিরে রাখা উচিত বা এটি একটি নাম নির্ধারণ করতে হবে (সম্ভবত প্যারেনগুলি ফাংশনের অংশ হিসাবে গণনা করা উচিত, যদিও তারা প্রযুক্তিগতভাবে তা নয়)।

Ungolfed
S1 =. (#' #'$~#)"."0'4123212128262126290901824'
S2 =. 'x   x  # # # x x x # #=====  # # # x x x x xx   x  # # x x x x # #'
f  =. 3 22 echo@$ S2 ('x'I.@:=])}~ (5 16$S1) {~ D1`D2`I1`I2 i. <

ধারনাটির সংযোগকারী প্রকারের মধ্যে পার্থক্যকারী অক্ষরগুলি থেকে আলাদা করে স্ট্রিংয়ের সাধারণ অংশ সংরক্ষণ করার ধারণা। S1অনন্য অক্ষরগুলি সঞ্চয় করে এবং ভরাট করার জন্য স্থানধারক হিসাবে অভিনয় করে S2প্যাটার্ন হিসাবে কাজ xকরে।


3

পাইথন - 167 166 164 161 159

C=raw_input()
a=["#   # "," "*6]["D"in C]
r=" #"
b="A"in C
i=3-b
d=(r*[i,5][C[1:]>"1"]).rjust(10)
t=r*3
print a+t+d+"\n===== "+t+d*~-len(C)+"\n"+a+r*i+"  "*b+d

3

জাভাস্ক্রিপ্ট (ES6) 178 186

7 বেস ব্লক থাকা সম্পাদনা করুন , বেস 7
ব্যবহার করুন স্ট্র্যাপ বিল্ডিং প্রতিস্থাপন এবং 7 বিল্ডিং ব্লক ব্যবহার করে সোজা উপায়।
ওপেন অনুরোধ হিসাবে সতর্কতা ব্যবহার করে স্ট্যান্ডআউট আউটপুট।
এখন আমি কিছু মাইক্রো-অপ্টিমাইজেশান চেষ্টা করব ...

F=t=>alert(
  {A:21349062249,D1:538695058296,D2:534740169498,I1:151139015296,I2:147184126498}[t]
  .toString(7).replace(/./g,c=>'\n0#   # 0===== 0 # # #0 # #0      0    '.split(0)[c])
)

টেস্ট ফায়ারফক্স / Firebug কনসোল - প্রক্রিয়া সহজ পরীক্ষা সরানোর 'সতর্কতা'

;['A','D1','D2','I1','I2'].forEach(i=>console.log(F(i)))

আউটপুট

#   #  # # #       # #
=====  # # #
#   #  # #         # #

       # # #     # # #
=====  # # #     # # #
       # # #     # # #

       # # # # # # # #
=====  # # # # # # # #
       # # # # # # # #

#   #  # # #     # # #
=====  # # #     # # #
#   #  # # #     # # #

#   #  # # # # # # # #
=====  # # # # # # # #
#   #  # # # # # # # #

2

এপিএল (115)

V←3 22⍴''⋄V[2;⍳5]←'='⋄V[⍳3;(2=⍴I)/(6+2×⍳8)~14 16/⍨'1'∊I]←V[⍳2;12]←V[⍳3;8 10]←V[R/1 3;1 5 20 22/⍨R←∨/'AI'∊I←⍞]←'#'⋄V

টেস্ট:

      V←3 22⍴''⋄V[2;⍳5]←'='⋄V[⍳3;(2=⍴I)/(6+2×⍳8)~14 16/⍨'1'∊I]←V[⍳2;12]←V[⍳3;8 10]←V[R/1 3;1 5 20 22/⍨R←∨/'AI'∊I←⍞]←'#'⋄V
A
#   #  # # #       # #
=====  # # #          
#   #  # #         # #
      V←3 22⍴''⋄V[2;⍳5]←'='⋄V[⍳3;(2=⍴I)/(6+2×⍳8)~14 16/⍨'1'∊I]←V[⍳2;12]←V[⍳3;8 10]←V[R/1 3;1 5 20 22/⍨R←∨/'AI'∊I←⍞]←'#'⋄V
D1
       # # #     # # #
=====  # # #     # # #
       # # #     # # #
      V←3 22⍴''⋄V[2;⍳5]←'='⋄V[⍳3;(2=⍴I)/(6+2×⍳8)~14 16/⍨'1'∊I]←V[⍳2;12]←V[⍳3;8 10]←V[R/1 3;1 5 20 22/⍨R←∨/'AI'∊I←⍞]←'#'⋄V
D2
       # # # # # # # #
=====  # # # # # # # #
       # # # # # # # #
      V←3 22⍴''⋄V[2;⍳5]←'='⋄V[⍳3;(2=⍴I)/(6+2×⍳8)~14 16/⍨'1'∊I]←V[⍳2;12]←V[⍳3;8 10]←V[R/1 3;1 5 20 22/⍨R←∨/'AI'∊I←⍞]←'#'⋄V
I1
#   #  # # #     # # #
=====  # # #     # # #
#   #  # # #     # # #
      V←3 22⍴''⋄V[2;⍳5]←'='⋄V[⍳3;(2=⍴I)/(6+2×⍳8)~14 16/⍨'1'∊I]←V[⍳2;12]←V[⍳3;8 10]←V[R/1 3;1 5 20 22/⍨R←∨/'AI'∊I←⍞]←'#'⋄V
I2
#   #  # # # # # # # #
=====  # # # # # # # #
#   #  # # # # # # # #

@ মার্টিনব্যাটনার: ওফস, ফিক্সড
মেরিনাস

2

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

f=c=>(b=(c[0]=='D'?'      ':'#   # '))+(e=(g=r=>parseInt(r,36).toString(2).replace(/./g,n=>' '+[' ','#'][n]))((o=c[1])?(o-1?73:'6f'):'6b'))+'\n===== '+(o?e:' # # #')+'\n'+b+(o?e:g('5f'))

কোডটি দ্রুত এবং নোংরা, তবে এটি কাজটি করে। বেশিরভাগ ক্ষেত্রে, #এর এবং স্পেসগুলি বাইনারি এবং তারপরে বেস 36 এ রেখে দেওয়া হয় I'm


যখন আমি রান কোড স্নিপেট ক্লিক করি তখন কিছুই দেখি না।
AL

এটি সম্ভবত কারণ এটি ECMAScript 6 টি তীর ফাংশন ব্যবহার করে, যা কেবলমাত্র সাম্প্রতিক ফায়ারফক্স সংস্করণগুলিতে সমর্থিত।
নিনজাবিয়ারমনেকি

আমি ফায়ারফক্সের শেষ সংস্করণ দিয়ে পরীক্ষা করেছি এবং কিছুই হয় না। এই ফাংশনটি পরীক্ষা করার জন্য কিছু করার আছে?
এএল

1
ওহ, এটি কেবল একটি ফাংশন কারণ। আমি এটি পরীক্ষা করার একটি উপায় যুক্ত করব।
নিনজাবিয়ারমনেকি

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

1

পার্ল 5 - 150 (এর জন্য 149 + 1 n)

Golfed:

@b=split//;$_='0   0 ###112##
===== ###11222
0   0 ##2112##';
@c=(@b[0]eq D,@b[1]ne 2,@b[0]eq A);@d=('#',$");s/([#12])/ \1/g;s/(\d)/$d[$c[$1]]/ge;say

STDIN থেকে ইনপুট, STDOUT এ আউটপুট। এর সাথে নির্দিষ্ট অক্ষর পূরণ করে কাজ করে# উপর নির্ভর করে বা ।

Ungolfed:

@b=split//; # char array from input
$_='0   0 ###112##
===== ###11222
0   0 ##2112##';

@c=(@b[0] eq 'D',@b[1] ne '2',@b[0] eq 'A');
@d=('#',' ');

s/([#12])/ \1/g; # add spaces
s/(\d)/$d[$c[$1]]/ge; # replace numbers with appropriate character
say $_;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.