কীপ্যাডসের সাবজেক্টে


15

টকিং রাখুন এবং নোবিডি এক্সপ্লোডগুলি একটি স্থানীয় মাল্টিপ্লেয়ার খেলা যেখানে এক খেলোয়াড় ভার্চুয়াল "বোম্ব" এর নিয়ন্ত্রণ রাখে এবং বোমা ডিফিউসাল ম্যানুয়ালটিতে অ্যাক্সেস পাওয়া "বিশেষজ্ঞ" দ্বারা পরিচালিত হওয়া অন্য খেলোয়াড়কে পরিচালনা করতে হয়। গেমটিতে নিরস্ত্র হওয়া একটি মডিউল হ'ল কীপ্যাড মডিউল, যা আমরা এই চ্যালেঞ্জের সাথে মোকাবিলা করব।

কাজটি

ইনপুট স্থান (0x21 থেকে 0x7E) ব্যতীত একক লাইনের মুদ্রণযোগ্য ASCII অক্ষরের সাথে শুরু হবে। এগুলি আপনার কাছে দৃশ্যমান কীপ্যাড বোতামগুলি উপস্থাপন করে।

পরবর্তী কয়েকটি লাইন "কীগুলি" উপস্থাপন করবে - কেবলমাত্র একটি লাইনে প্রথম লাইনের সমস্ত অক্ষর থাকবে, অগত্যা যাতে ক্রম হয় না। আপনার কাজটি কী-প্যাড অক্ষরগুলি মিলে যাওয়া কী লাইনের ক্রম অনুসারে আউটপুট করা।

উদাহরণস্বরূপ, যদি ইনপুট ছিল

5~Fy
HrD7K!#}
Ui%^fHnF
)Tf;y~I5
~Fi(&5gy
,'Xd#5fZ

তারপর কীপ্যাড বোতাম আছে 5, ~, Fএবং y। কেবলমাত্র চতুর্থ কী লাইনে ~Fi(&5gyএই সমস্ত অক্ষর রয়েছে, তাই আমরা কীপ্যাডের অক্ষরগুলিকে ক্রমানুসারে আউটপুট করে আছি, যেমন ~F5y

বিধি এবং ব্যাখ্যা

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

পরীক্ষার মামলা

7
4?j01C3"ch
KP.OG>QB)[
z#)Kn"I2&.
]#,D|sBFy5
Qzj*+~7DLP

আউটপুট: 7। শুধুমাত্র শেষ লাইনে একটি রয়েছে 7

0b~
Ob+hy{M|?;>=dtszPAR5
*8rCfsw|3O9.7Yv^x>Hq
$ip.V@n}|La:TbIt^AOF
jZ[Ec4s0|%b*$id',~J6
z*#b}-x$Ua&!O2;['T+?
NVj_X8rlhxfnS\.z}];c
bykscf.w^dnWj+}-*2g_
VP`AJH|&j5Yqmw/"9IMc

আউটপুট : 0b~। 4 র্থ কী লাইনে ইতিমধ্যে সঠিক ক্রমের অক্ষর রয়েছে।

MTuz
bIAr>1ZUK`s9c[tyO]~W
oMGIi/H&V"BeNLua%El=
j*uYbplT:~);BM|_mPZt
Q}z5TC@=6pgr<[&uJnM%
YOA(F~_nH6T{%B7[\u#5
y&t"8zQn{wo5[Idu4g:?
[0tZG"-fm!]/|nqk,_2h
dA&C.+(byo6{7,?I}D@w

আউটপুট : zTuM। মূল লাইনটি 4 র্থ এক, যদিও 3 য় কী লাইনটি খুব কাছের মিস।

o@nj<G1
f]?-<I6h2vS*%l=:}c8>LK5rMdyeon,;sE[@m(73
ibhp+2Hq6yKzIf_Zo}EO3-[*0/e&Fvd]wQU=|%`C
;}>d'cg~CPtQG&%L\)MUl419bkTZ7@]:[*H"RyYj
L^<:zXJ#kj$EFlwN%B`Dd,Cs?]xRZ*K9-uQ.@&f+
i1v'7:90R-l}FMxj`,DTWK+(n32Z4Vs[p@%*eS!d
B|^Ti/ZG$}ufL9*wE[AVt]P7CrX-)2JpD<sYxd6O
ex.$4#KarS^j+'_!B"]H[\83:(DCXUgI*Lct?qAR
^GXQoy*KW&v}n']Em~\N9)fxP(qC=7#4sRdcD6%5
;inr[&$1j_!F~@pzo#blv]}<'|fRds6OW%tEg"G2
e;0T#gfo^+!:xHDN&4V=In?AwhEv$2Fd~ZLz_\81

আউটপুট : n1j@o<G। কী লাইনটি দ্বিতীয় শেষ লাইন।

স্কোরিং

এটি , সুতরাং কয়েকটি বাইটের কোডটি জয়ী।


STDOUT একমাত্র গ্রহণযোগ্য আউটপুট পদ্ধতি, বা একটি ফাংশন রিটার্ন মান অনুমোদিত?
জাগারব

@ জগারব ফাংশন ইনপুট এবং আউটপুট উভয়ই ঠিক আছে
Sp3000

দীর্ঘশ্বাস ফেলুন আমার কাছে একটি সমাধান রয়েছে যা একটি পরীক্ষার কেসের জন্য কাজ করে ... অন্যান্য পরীক্ষার ক্ষেত্রে অনেকগুলি পালানোর অক্ষর। আচ্ছা ভালো.
কাইল কানোজ

উত্তর:



8

পাইথ, 10

@zhf!-zT.z

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

ব্যাখ্যা

@zhf!-zT.z         ##  z = first line of input, .z = list of rest of lines
   f    .z         ##  Filter .z as T based on
    !-zT           ##  Whether removing all the letters from z that appear in T leaves an
                   ##  Empty string or not (keep the ones that give empty strings)
  h                ##  Take the first such line (necessary indexing, shouldn't ever matter)
@z                 ##  @ is setwise intersection. Pyth implements this by iterating over
                   ##  each element of the second argument and keeping values that appear
                   ##  in the first argument, which gives the intended result

7

পাইথ, 9 বাইট

eolN@Lz.z

প্রদর্শন

@Lz.z: প্রথম লাইনটি ছেদ করার জন্য সমস্ত লাইন ফিল্টার করুন।

olN: দৈর্ঘ্য অনুসারে অর্ডার

e: দীর্ঘতম নিন।


3

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

g(!)(a:b)=[c|d<-b,all(!d)a,c<-d,c!a]
g elem.lines

প্রথম লাইন একটি সহায়ক ফাংশন সংজ্ঞায়িত gকরে, দ্বিতীয় লাইনের নামবিহীন ফাংশনটি আমার উত্তর।

ব্যাখ্যা

অ্যালগরিদম হ'ল স্পষ্ট: লাইনগুলিতে ইনপুট বিভক্ত করুন, প্রথম লাইনের সমস্ত অক্ষর সমেত লাইনটি সন্ধান করুন এবং সেই লাইনের অন্যান্য সমস্ত অক্ষরগুলি ফিল্টার আউট করুন।

g(!)(a:b)=                            -- g gets a binary function ! and list of strings a:b
          [c|                         -- and returns the string of characters c where
             d<-b,all(!d)a,           -- d is drawn from b and x!d holds for all x in a,
                           c<-d,c!a]  -- and c is drawn from d and c!a holds.
g elem.lines                          -- The input is split into lines and fed to g elem;
                                      -- then x!d means x `elem` d in the above.

3

প্রোলোগ, 204 190 বাইট

প্রোলোগের পক্ষে এটি একটি দুর্দান্ত চ্যালেঞ্জ হতে পারে যদি এটি মাল্টিলাইন ইনপুট এবং অনস্কেপড অক্ষরগুলির সম্মিলিত প্রয়োজনীয়তা এবং 'ইনপুটে' না থাকত character কোডের একটি বড় অংশ অক্ষর হিসাবে একটি ফাইল পড়ার জন্য উপস্থিত ছিল (p এবং r) কোডগুলি যা আমাকে বিভিন্ন লাইনে অনস্কেপড ইনপুট নেওয়ার জন্য করতে হয়েছিল

only যদি কেবল একটি অনির্বাচিত অক্ষর হিসাবে উপস্থিত থাকে তবে আমি স্ট্রিং হিসাবে ইনপুটটি পড়তে পারি
only যদি কেবল "অনির্বাচিত অক্ষর হিসাবে উপস্থিত থাকে তবে আমি একটি পরমাণু হিসাবে ইনপুটটি পড়তে পারি।
যদি ইনপুটটি মাল্টলাইন না হয়, পরিবর্তে স্থান দ্বারা পৃথক করে বলুন, আমি কোডগুলিতে এটি একটি লাইন হিসাবে পড়তে পারি।

r(I,[H|T]):-read_line_to_codes(I,H),H\=end_of_file,r(I,T).
r(_,[]).
q(_,[]).
q(E,[H|T]):-subset(E,H),intersection(H,E,X),writef("%s",[X]);q(E,T).
p:-open("t",read,I),r(I,[H|T]),q(H,T),!.

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

  1. ফাইল টি (যা সমস্ত ইনপুট ধারণ করে) খোলার জন্য
  2. অক্ষরের কোড হিসাবে সমস্ত লাইন পড়ুন এবং তালিকাগুলির তালিকায় রাখুন (প্রতি সারি 1 টি তালিকা)
  3. পুচ্ছ তালিকার উপরে পুনরাবৃত্তি করে এবং তালিকার উপসেট হিসাবে প্রধান তালিকা উপস্থিত থাকে কিনা তা পরীক্ষা করে
  4. সঠিক ক্রমে চেয়েছিলেন অক্ষরগুলি পেতে মাথা সহ মিলিত তালিকে ছেদ করে
  5. মুদ্রণ সমাধান


প্রোগ্রামটি কীভাবে চালানো যায় কমান্ড দিয়ে চালানো হয়:
পি।
ইনপুট যুক্ত ফাইলের নামযুক্ত টি একই ডিরেক্টরিতে থাকতে হবে।

সম্পাদনা করুন: ওআর দিয়ে 2 কিউ-ক্লজ একত্রিত করে 14 বাইট সংরক্ষণ করা হয়েছে।


2

ম্যাটল্যাব, 107 বাইট

b=char(strsplit(char(inputdlg),' '));[~,x]=ismember(b,b(1,:));[~,f]=min(abs(1./sum(~x')-1));b(f,(~~x(f,:)))

এটি কোডের একটি খুব slালু অংশ হিসাবে শেষ হয়েছে ...

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

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


2

ওল্ফ্রাম ভাষা 106 বাইট

c=Characters[InputString[]~StringSplit~"\n"];o=c[[1]];t=Select;t[t[Rest@c,#~SubsetQ~o&][[1]],o~MemberQ~#&]

উদাহরণ ইনপুট:

ইনপুট পপআপ

আউটপুট:

আউটপুট ফলাফল

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

সম্পাদনা করুন: ইনফিক্স নোটেশন এবং আমার অপ্রয়োজনীয় ভেরিয়েবলগুলি ব্যবহার করার পরামর্শের জন্য মার্টিন বাটনারকে ধন্যবাদ


হ্যাঁ, গণিত কিছু গল্ফিং ইঙ্গিত: যতদূর আমি আপনাকে ব্যবহার করতে cএবং iকেবল একবারই বলতে পারি , সুতরাং এগুলি ভেরিয়েবলগুলিতে বরাদ্দ করার কোনও লাভ নেই। আপনি সম্ভবত এই টিপ থেকে কিছু বাইট সংরক্ষণ করতে পারেন । না দেওয়ার মাধ্যমে oএকটি নাম। s[[1]]হয় #&@@s(এর আপনার দ্বিতীয় ব্যবহারের জন্য একই [[1]])। আপনি StringSplitদ্বিতীয় প্যারামিটার ছাড়াই ব্যবহার করতে পারেন (কারণ এটি ডিফল্টরূপে সাদা স্পেসে বিভক্ত হয়)। SubsetQএবং MemberQবাইট সংরক্ষণ করতে infix স্বরলিপি ব্যবহার করতে পারেন, উদাহরণস্বরূপ #~SubsetQ~o
মার্টিন ইন্ডার

আমি এটি কিছু পরিবর্তন করেছি, এবং আমি কেবল এটি ব্যবহার করেছি iএবং cএকবার পরিবর্তন করার সাথে সাথে লক্ষ্য করিনি , টিপের জন্য ধন্যবাদ! এছাড়াও, আমার দ্বিতীয় প্যারামিটারটিও হওয়া দরকার StringSplit, কারণ কিছু চরিত্রের সাথে সাদা বর্ণের ব্যাখ্যা করা হয়েছিল (যা সত্যই হোয়াইটস্পেস নয়)
ইয়ান জনসন

মজাদার. সেক্ষেত্রে আপনি এখনও একটি \nবাইট সংরক্ষণ করতে লেখার পরিবর্তে আক্ষরিক নিউলাইন এম্বেড করতে পারেন এবং অন্যটিকে সংরক্ষণ করতে ইনফিক্স স্বরলিপি ব্যবহার করতে পারেন।
মার্টিন এন্ডার

হ্যাঁ, স্ট্রিংস্প্লিটের ক্ষেত্রে কী ঘটছে তা পুরোপুরি নিশ্চিত নয়, এটি আসলে ইনপুটস্ট্রিং ব্যবহারের পরিণতি হতে পারে
ইয়ান জনসন

1

পাইথন 2, 112 বাইট

import sys
i=sys.stdin.readlines()
print[''.join(c for c in l if c in i[0])for l in i[1:]if set(i[0])<set(l)][0]

উদাহরণ রান: আইডিয়ন


1

জাভাস্ক্রিপ্ট (ES6), 107 104 102 বাইট

সমর্থনকারী ব্রাউজারগুলির জন্য স্নিপেট ডেমো।

f=x=>([a]=x.split`
`).map(y=>[...y].filter(z=>~a.indexOf(z)-x).join(x='')).find(z=>z.length==a.length)
<textarea id="i" rows="6" cols="45">o@nj<G1
f]?-<I6h2vS*%l=:}c8>LK5rMdyeon,;sE[@m(73
ibhp+2Hq6yKzIf_Zo}EO3-[*0/e&Fvd]wQU=|%`C
;}>d'cg~CPtQG&%L\)MUl419bkTZ7@]:[*H"RyYj
L^<:zXJ#kj$EFlwN%B`Dd,Cs?]xRZ*K9-uQ.@&f+
i1v'7:90R-l}FMxj`,DTWK+(n32Z4Vs[p@%*eS!d
B|^Ti/ZG$}ufL9*wE[AVt]P7CrX-)2JpD<sYxd6O
ex.$4#KarS^j+'_!B"]H[\83:(DCXUgI*Lct?qAR
^GXQoy*KW&v}n']Em~\N9)fxP(qC=7#4sRdcD6%5
;inr[&$1j_!F~@pzo#blv]}<'|fRds6OW%tEg"G2
e;0T#gfo^+!:xHDN&4V=In?AwhEv$2Fd~ZLz_\81</textarea><br /><input type="button" onclick="o.value=f(i.value)" value="Run"> Output: <input type="text" id="o" readonly />

মন্তব্য করেছে:

f=x=>
([a]=x.split('\n')) // split input by newlines, assign first value to a
.map(y=> // map function to each line
    [...y].filter(z=> // filter characters
        ~a.indexOf(z)-x // a has character z and not the first item (x is still set)
    ).join(x='') // join characters with empty string, reset x flag
).find(z=>z.length==a.length) // return string with same length as a
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.