প্যাটার্নে একটি প্রোগ্রাম দ্বারা প্রিন্সেসি প্রিফিক্স


16

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

আপনি কেবলমাত্র 96 টি মুদ্রণযোগ্য আসকি অক্ষর (এবং সারিগুলির শেষে নিউলাইনগুলি) থেকে আপনার পছন্দের বেশিরভাগ 26 টি অক্ষর ব্যবহার করতে পারেন

প্রতিটি সারি এবং কলামে প্রতিটি অক্ষর সুডোকু ধাঁধার সাথে আলাদা আলাদা হওয়া আবশ্যক অর্থাৎ একটি সারিতে বা কলামে দু'বার কোনও অক্ষর থাকতে পারে না।

এর সাথে একটি সঠিক উদাহরণ কোডব্লক M = 4, N = 3এবং alphabet = {a,b,c,d,/,*}:

abcd
bcd*
*/ac

কোড বিশদ

  • আপনি আপনার কোড-ব্লকের আকৃতিটি বেছে নিতে পারেন (যেমন Mএবং N)।
  • ব্লকটি সম্পূর্ণরূপে অক্ষর দিয়ে পূর্ণ করতে হবে অর্থাৎ প্রতিটি সারিতে একই দৈর্ঘ্য থাকতে হবে।
  • শেষ সারিটির শেষে একটি চলন্ত নিউলাইন optionচ্ছিক।
  • প্রতিটি সারি এবং কলামে উপরে লিখিতভাবে প্রতিটি অক্ষর আলাদা হতে হবে।

আউটপুট বিশদ

  • আপনার কোনও অতিরিক্ত আউটপুট ছাড়াই ছোট্ট প্রিন্সের অধ্যায় 1 এর একটি উপসর্গ আউটপুট বা ফিরে আসা উচিত ।
  • আপনি যদি পাঠ্যের কোনও নতুন লাইনে পৌঁছান তবে আপনি এটিকে যে কোনও সাধারণ রূপ হিসাবে উপস্থাপন করতে পারেন (\ r, \ n, \ r \ n) তবে তাদের মধ্যে একটি মাত্র ব্যবহার করুন এবং এটি স্কোরের জন্য 1 বাইট হিসাবে গণনা করুন।
  • একটি অতিরিক্ত ট্রেলিং নতুনলাইন optionচ্ছিক।

আপনার স্কোরটি যদি উপস্থিত থাকে তবে অতিরিক্ত নিউলাইন বাদ দিয়ে আউটপুট পাঠ্যের দৈর্ঘ্য । উচ্চতর স্কোর ভাল।

উদাহরণ উত্তর

##Python3, score = 6

alphabet = `print('O\ce w)#X` (alphabet element count = 16)

    print('O\
    nce w')#X

আপনি পাইথন 3 (আইডোন) প্রোগ্রাম বা @ মার্টিনব্যাটনার দ্বারা সরবরাহিত এই সিজেএম প্রোগ্রাম (অনলাইন) দিয়ে আপনার কোডটির মেয়াদ পরীক্ষা করতে পারেন ।


এটি কি সর্বাধিক 26x26 এ প্রোগ্রামের আকারকে সীমাবদ্ধ করে না?
মেরিনাস

@ মারিনাস হ্যাঁ তা করে।
এলোমেলো

আপনি কি নিশ্চিত যে এটি সমাধানযোগ্য?
FUZxxl

@FUZxxl প্রশ্ন স্কোর 6. আশা রাখি প্রশ্নের সঙ্গে একটি রেফারেন্স সমাধান রয়েছে এমন ডিজাইন করা হয়েছে যে এটি না সমগ্র জিনিস মুদ্রণ করা সম্ভব (অথবা এটা টাই ঊর্মিভঙ্গ হবে)।
মার্টিন ইন্ডার

@ মার্টিনব্যাটনার আহ! আমি "এর একটি উপসর্গ ..." অংশটি ভুলে গিয়েছিলাম।
FUZxxl

উত্তর:


4

সিজেম, 47

"Once wh
en Imwas
msix yea
r2s oldm
I "N-'m/
Sc*2s-O"
saw"N/SO
o'aS"m2 
a"Oo2s-N
-S/OI*so
'yI-a"nr
wiNadI"c
cel'iaIS
/m2*Oo'x
 I-scel*
Ooel'c 2
2/'e*ON-

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

বর্ণমালা: "'*-/2INOSacdehilmnorswxy

ব্যাখ্যা:

"Once wh
en Imwas
msix yea
r2s oldm
I "         push this string
N-          remove newlines
'm/Sc*      replace m's with spaces (the c is redundant)
2s-         convert 2 to string and remove 2's
O           push an empty string
"
saw"        push this string
N/          split into lines (effectively removes the newline)
S           push a space
Oo          print empty string (no-op)
'a          push 'a'
S           push a space
"m2 
a"          push this string
Oo          print empty string (no-op)
2s-         convert 2 to string and remove 2's
N-          remove newline
S/          split by space (effectively removes the space)
OI*so       print an empty string repeated 18 times (no-op)
'y          push 'y'
I-          subtract 18 -> 'g'
a           wrap in array (string) -> "g"
"nr
wiNadI"     push this string
c           convert to (first) character -> 'n'
c           convert to character (no-op)
el          convert to lowercase (no-op)
'i          push 'i'
a           wrap in array (string) -> "i"
IS/         split " " into slices of length 18 -> [" "]
m           (acting as -) remove space strings from "i" (no-op)
2*          repeat "i" 2 times -> "ii"
Oo          print empty string (no-op)
'x          push 'x'
I-          subtract 18 -> 'f'
sc          convert to string and back to char (no-op)
el          convert to lowercase (no-op)
*           join "ii" with separator 'f' -> "ifi"
Oo          print empty string (no-op)
el          convert to lowercase (no-op)
'c          push 'c'
2 2/        divide 2 by 2 -> 1
'e          push 'e'
*           repeat 'e' 1 time -> "e"
O           push empty string
N-          remove newlines (no-op)

7

পাইপ , স্কোর = 38

eyli:
"Once
when0
I was
si01x
year5
old I
0sMw1
1M 0"
X1RMh
Rnsxy
iR:'M
'aiR 
:5'si

বর্ণমালা: "'015:IMORXacdehilnorswxy

(আমি নিশ্চিত সত্যিকারের প্রোগ্রামিং ভাষায় এটি চেষ্টা করতে ঘৃণা করব ))

ব্যাখ্যা:

eyl      Statements consisting of single variables are no-ops
i:       Assign to i the following:
"Once
when0
I was
si01x
year5
old I
0sMw1
1M 0"    ...this string
X1       ...repeated once (no-op to get alignment right)
RMh      ...with all 1s and 0s removed (h is preinitialized to 100)
Rns      ...and all newlines replaced with spaces.
xy       More no-ops
iR:'M'a  Replace every M with a, assigning result back to i
iR:5's   Replace every 5 with s, assigning result back to i
i        Auto-print i

4

পাইথন 3, স্কোর = 11

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

x=chr 
print(
"Once\
 when"
,x(73)
)#prin

মনে রাখবেন যে প্রথম লাইনের শেষে একটি স্থান রয়েছে। ওরফে xজন্য chrএকই চরিত্র একাধিক কলামে শেষ পর্যন্ত এড়ানো করা প্রয়োজন। শেষে মন্তব্য অক্ষরগুলি প্রায় কিছু হতে পারে।

বর্ণমালাটি 21 মুদ্রণযোগ্য অক্ষর, প্লাস নিউলাইন (শুরুতে স্থানটি নোট করুন):

 "#(),37=O\cehinprtwx

আউটপুট হল:

একবার যখন আমি


দ্রষ্টব্য যে এটি পাইথন 2 এও বৈধ। একটি ভাল উত্তর খোঁজার জন্য গ্রেটস।
mbomb007

3

সিজেম, স্কোর = 21

"Once wh
en I"N-o
N;S"was 
six y"N-

বর্ণমালা: -;INOSacehinoswxy

শুধু বল ঘূর্ণায়মান পেতে; এটি সম্ভবত সহজেই মারধর করা যেতে পারে।


2

সিজেম, স্কোর = 15

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

 79c32"*)+#,105468:;=>Ibef
,:=>Ibcef";7 6)#*219435+80
50I=>;9)6#*127438+ ":,bcfe
),68:>=Ibcef";20 5#*17394+
6)4*b123,97>:c"80f5=+;e# I
"9>+f=e# ),*0481362bI:;5c7

বর্ণমালা (26): " #)*+,0123456789:;=>Ibcef

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

ব্যাখ্যা

মূল ধারণাটি হ'ল বেস এনকোডিংটি ব্যবহার করা যাতে আমরা 26 টিরও বেশি অক্ষর প্রিন্ট করতে পারি। মূল কোডটি হ'ল

79c                             e#  Push "O"
85032995607801617394 28b        e#  Push array of indices, encoding using base 28
123,97>:c" I                    e#  Push "abcdefghijklmnopqrstuvwxyz I\n"
"+
f=                              e#  Map indices to chars

নোট করুন যে আমরা প্রথমটির "O"জন্য "Once"আলাদাভাবে চিকিত্সা করি কারণ এটি আমাদের স্ট্রিংয়ের সাথে অন্তর্ভুক্ত করা আমাদের বর্ণমালার অনেক বেশি লাগবে। আমরা চাইলে আমাদের সূচিকরণের স্ট্রিংটি প্রসারিত করতে চেষ্টা করতে পারি, তবে যেহেতু বড় হাতের অক্ষরগুলি কিছু সময়ের জন্য ঘটে থাকে "I"আমি তার সাথে খুব বেশি মাথা ঘামাই না।

আমাদের তখন দ্বিতীয় লাইনে বড় সংখ্যাটি তৈরি করতে হবে h আমি যে পদ্ধতিটি গ্রহণ করেছি তা হ'ল বারবার কিছু শক্তি দিয়ে গুণ করা, তারপরে একটি ধ্রুবক যুক্ত করা এবং পুনরাবৃত্তি করা, সুতরাং উপরের 85032995607801617394কোডটিতে প্রতিস্থাপন করা হয়

32
7 6) # * 219435 +
9) 6 # * 127438 +
20 5 # * 17394 +

যেখানে )ইনক্রিমেন্ট এবং #সিজেমে এক্সফেনশনেশন।

তারপরে বাকী (সবচেয়ে বিরক্তিকর অংশ) কলামের মানদণ্ডটি পূরণ করতে প্রতিটি সারি প্যাড করছে। এটি করার জন্য আমরা অক্ষরে স্ট্রিংগুলিকে ডাম্প করি এবং ;সেগুলি পপ করতে ব্যবহার করি। দুর্ভাগ্যক্রমে, যখন আমরা e#মন্তব্যগুলির পাশাপাশি জিনিসগুলি আরও সহজ করার জন্য ব্যবহার করতে চাই , তবুও ক্ষতিকারক ঘটনাটি #এটিকে নিষিদ্ধ করে, তাই এটি কেবল শেষ লাইনেই করা হয়েছে।

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


1

পাইথন 2, স্কোর = 13 (অবৈধ)

পাইথন এটির জন্য সেরা ভাষা নয় .... আরও তদন্তের পরে, nআমার প্রথম লাইনে দুটি আছে । এখানে কোন উপকারী প্রতিকার নেই এবং আমি পাইথনের সাথে আমার সময় নষ্ট করা বন্ধ করব। আমি বর্তমানে অন্য ভাষায় সমাধান তৈরির জন্য কাজ করছি, তবে কোনটি এখনও ভাগ করে নেব না।

print"Once wh\
en I",#Oncehtp
chr(0167)#Onwt

বর্ণমালা (22): "#(),0167IOcehinprtw

আউটপুট: Once when I w


আপনার প্রথম লাইনটি অবৈধ, কারণ এতে দুটি nগুলি রয়েছে। পাইথনে এই সমস্যাটি প্রায় অসম্ভব, যেহেতু আপনি কেবল একবার লাইন ধারাবাহিকতা ব্যাকস্ল্যাশ ব্যবহার করতে পারেন (যেহেতু ব্যাকস্ল্যাশ শেষ কলামে হওয়া দরকার) এবং কোনও লাইনে একই ধরণের উদ্ধৃতি চিহ্ন দুটি থাকতে পারে না।
ব্ল্যাককিংহিট

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