1 ডি কীবোর্ড জুড়ে সোয়াইপিং অনুকূল করা


16

এটি একটি কাস্টম স্কোরিং সিস্টেম সহ একটি , যেখানে সর্বনিম্ন স্কোর জয়ী।

ভূমিকা

অনেক স্মার্টফোন 2D ভার্চুয়াল কীবোর্ড জুড়ে আপনার আঙুলটি সোয়াইপ করে পাঠ্য প্রবেশ করতে দেয় । এই প্রযুক্তিটি সাধারণত একটি পূর্বাভাস অ্যালগরিদমের সাথে মিলিত হয় যা অনুমান করা শব্দের একটি তালিকা তৈরি করে, সম্ভবত সবচেয়ে কম সম্ভবত সম্ভাব্য থেকে সাজানো।

এই চ্যালেঞ্জের মধ্যে:

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

এক মাত্রায় স্যুইপ করা

নীচে সব বর্ণ সহ একটি ডিক্সোগ্রাফিকভাবে সাজানো 1 ডি কীবোর্ড রয়েছে:

ABCDEFGHIJKLMNOPQRSTUVWXYZ

এনবি: আপনি মোবাইল থেকে ব্রাউজ করছেন তবে এটি বেশ কয়েকটি সারিতে প্রদর্শিত হতে পারে। দয়া করে এটি একটি একক সারি হিসাবে মনে করুন।

এই জাতীয় কীবোর্ডে ' জিওএলএফ ' শব্দটি প্রবেশ করতে আমরা করব:

  • শুরু হবে G
  • ডান থেকে সোয়াইপ করুন O
  • বাম থেকে সোয়াইপ করুন F

কারণ এর Lমধ্যে অবস্থিত Oএবং F, আমরা কেবল সেখানে না থামিয়ে স্যুইপ করতে চলেছি।

সুতরাং এই কীবোর্ডে ' জিওএলএফ ' এর সোয়াইপ ক্রমটি GOF

আরো সাধারণভাবে:

  • প্রথম এবং শেষ বর্ণগুলি সর্বদা অন্তর্ভুক্ত থাকে।
  • অন্যান্য অক্ষরগুলি অন্তর্ভুক্ত থাকে এবং যদি কেবল তাদের পরে কোনও দিক পরিবর্তন দরকার হয়।
  • বারবার বর্ণগুলি অবশ্যই একক বর্ণের মতো আচরণ করা উচিত। উদাহরণস্বরূপ, উপরের কীবোর্ডে:

    • ' লুপ ' এনকোড করা হবে LP(কোনও স্টপ না দিয়ে O)
    • ' গোফি ' এ হিসাবে এনকোড হবে GOFY(এটি Oঅন্তর্ভুক্ত করা হয়েছে কারণ সেখানে একটি দিক পরিবর্তন রয়েছে - এটি দ্বিগুণ হওয়ার কারণে নয়)

কীবোর্ড অপ্টিমাইজেশন

আসুন শব্দের নীচের তালিকাটি বিবেচনা করুন: [' প্রোগ্রামারিং ', ' পুজলস ', ' এবং ', ' কোড ', ' জিএলএফ ']।

এই শব্দগুলি টাইপ করতে আমাদের 16 টি স্বতন্ত্র অক্ষর প্রয়োজন, সুতরাং আমাদের কেবল 16-অক্ষরের কীবোর্ডের প্রয়োজন। নিম্নলিখিতটি হ'ল - আবার - অভিধানিকভাবে বাছাই করা:

ACDEFGILMNOPRSUZ

এই কীবোর্ডের সাহায্যে শব্দগুলি এভাবে এনকোড করা হবে:

  • প্রোগ্রামিং : PRGRAMING(9 পদক্ষেপ)
  • পুজলস : PZES(৪ টি চাল)
  • এবং : AND(3 চাল)
  • কোড : CODE(4 চাল)
  • জিএলএফ : GOF(3 চাল)

এটি সমস্ত শব্দের জন্য মোট 23 পদক্ষেপ

তবে আমরা এই কীবোর্ডের সাহায্যে আরও ভাল কিছু করতে পারি:

CGODSELZNUIFRPAM

যা দেয়:

  • প্রোগ্রামিং : PGMG(4 চাল)
  • পুজলস : PS(২ টি চাল)
  • এবং : AD(২ টি চাল)
  • কোড : CE(2 চাল)
  • জিএলএফ : GF(2 চাল)

মোট 12 টি পদক্ষেপের জন্য

কীবোর্ড স্কোরিং

এন

Σ=1এনমি2

মি

92+ +42+ +32+ +42+ +32=13142+ +22+ +22+ +22+ +22=32

কম, ভাল।

চ্যালেঞ্জ

  • শব্দের একটি তালিকা দেওয়া, আপনার কোড অবশ্যই এই তালিকার জন্য একটি বৈধ কীবোর্ড আউটপুট । যদি প্রতিটি শব্দ একটি অনন্য সোয়াইপ ক্রম উত্পন্ন করে তবে একটি কীবোর্ডকে বৈধ মনে করা হবে।
  • আপনাকে শব্দের 11 টি স্বাধীন তালিকা দেওয়া হবে। আপনার স্কোর সমান হবে:

    এস+ +এল
    এসএল

    আপনার স্কোরটি পরীক্ষা করতে আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেনscore()ফাংশন প্রথম প্যারামিটার এবং দ্বিতীয় প্যারামিটার হিসাবে 11 কীবোর্ড স্ট্রিং একটি অ্যারে (কেস কোন ব্যাপার না) হিসাবে আপনার কোড দৈর্ঘ্য প্রত্যাশা করে।

  • সর্বনিম্ন স্কোর সহ জমাটি জয়লাভ করে। টাই করার ক্ষেত্রে, জমা দেওয়া জমাটি প্রথমে জয়লাভ করে।

অতিরিক্ত বিধি

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

শব্দ তালিকা

1) Sanity check #1 (only 4 valid solutions: HES, SEH, ESH or HSE)
SEE, SHE

2) Sanity check #2 (16 valid solutions, of which 4 are optimal: COLD, DOLC, DLOC or CLOD)
COLD, CLOD

3) Sanity check #3
ACCENTS, ACCESS

4) Warm-up
RATIO, NATION, NITRO, RIOT, IOTA, AIR, ART, RAT, TRIO, TRAIN

5) Pangram
THE, QUICK, BROWN, FOX, JUMPS, OVER, LAZY, DOG

6) Common prepositions
TO, OF, IN, FOR, ON, WITH, AT, BY, FROM, UP, ABOUT, INTO, OVER, AFTER

7) Common verbs
BE, HAVE, DO, SAY, GET, MAKE, GO, KNOW, TAKE, SEE, COME, THINK, LOOK, WANT, GIVE, USE, FIND, TELL, ASK, WORK, SEEM, FEEL, TRY, LEAVE, CALL

8) Common adjectives
GOOD, NEW, FIRST, LAST, LONG, GREAT, LITTLE, OWN, OTHER, OLD, RIGHT, BIG, HIGH, DIFFERENT, SMALL, LARGE, NEXT, EARLY, YOUNG, IMPORTANT, FEW, PUBLIC, BAD, SAME, ABLE

9) Common nouns
TIME, PERSON, YEAR, WAY, DAY, THING, MAN, WORLD, LIFE, HAND, PART, CHILD, EYE, WOMAN, PLACE, WORK, WEEK, CASE, POINT, GOVERNMENT, COMPANY, NUMBER, GROUP, PROBLEM, FACT

10) POTUS
ADAMS, ARTHUR, BUCHANAN, BUREN, BUSH, CARTER, CLEVELAND, CLINTON, COOLIDGE, EISENHOWER, FILLMORE, FORD, GARFIELD, GRANT, HARDING, HARRISON, HAYES, HOOVER, JACKSON, JEFFERSON, JOHNSON, KENNEDY, LINCOLN, MADISON, MCKINLEY, MONROE, NIXON, OBAMA, PIERCE, POLK, REAGAN, ROOSEVELT, TAFT, TAYLOR, TRUMAN, TRUMP, TYLER, WASHINGTON, WILSON

11) Transition metals
SCANDIUM, TITANIUM, VANADIUM, CHROMIUM, MANGANESE, IRON, COBALT, NICKEL, COPPER, ZINC, YTTRIUM, ZIRCONIUM, PLATINUM, GOLD, MERCURY, RUTHERFORDIUM, DUBNIUM, SEABORGIUM, BOHRIUM, HASSIUM, MEITNERIUM, UNUNBIUM, NIOBIUM, IRIDIUM, MOLYBDENUM, TECHNETIUM, RUTHENIUM, RHODIUM, PALLADIUM, SILVER, CADMIUM, HAFNIUM, TANTALUM, TUNGSTEN, RHENIUM, OSMIUM

স্যান্ডবক্স (এখন মুছে ফেলা হয়েছে)।
আর্নল্ড

অনুমান করুন যে আর কে লড়াই জানেন ...
এরিক আউটগলফার

যদি আপনি এই নিয়মটি অন্তর্ভুক্ত করতে চলেছেন: "প্রতিটি তালিকার জন্য আপনার কোডটি অবশ্যই 1 মিনিটেরও কম সময়ে চলতে হবে", এটি কোথায় চলবে তা নির্দিষ্ট করে বলা ভাল। এক মিনিটে একটি কম্পিউটারে চলে এমন কোডে অন্যটিতে ঘন্টা লাগতে পারে।
মাইপিটলিয়ন

@ মাইপেটলিয়ন যা এখানে আসলে গুরুত্বপূর্ণ তা হ'ল কোডটি আসলে কিছু আউটপুট করে (এবং কেবল চিরকালের জন্য নয়) তাই আমি এই নিয়মটি শিথিল করেছি।
আর্নল্ড

" যদি প্রতিটি শব্দ একটি অনন্য সোয়াইপ ক্রম উত্পন্ন করে তবে একটি কীবোর্ডটি বৈধ হিসাবে বিবেচিত হবে " "- এখানে অনন্য অর্থ কী? উদাহরণস্বরূপ, বর্ণানুক্রমিক আদেশ কি 'আবদা', 'আকদা' শব্দের একটি অবৈধ সমাধান?
এনজিএন

উত্তর:


5

পাইথন 3 + গুগল ও-সরঞ্জাম , 1076 + 1971 = 3047

এটি সর্বদা অনুকূল সমাধানগুলি সন্ধান করে (তবে এটি করার জন্য প্রচুর কোড ব্যয় করে)। এটি কয়েক সেকেন্ডে 1-9 পরীক্ষা চালায়, ছয় মিনিটে 10 পরীক্ষা করে এবং এক মিনিটে 11 পরীক্ষা করে।

কোড

from ortools.sat.python.cp_model import*
from itertools import*
C=combinations
R=range
L=len
T=lambda w:[*zip(w,w[1:],w[2:])]
W=[(*(g[0]for g in groupby(w)),)for w in input().split()]
K={*sum(W,())}
m=CpModel()
V=m.NewBoolVar
B={c:V(f"B{c}")for c in C(K,2)}
for a,b in[*B]:B[b,a]=B[a,b].Not()
for a,b,c in permutations(K,3):m.AddBoolOr([B[a,b],B[b,c],B[c,a]])
M={t:V(f"M{t}")for t in{*sum(map(T,W),[])}}
for a,b,c in M:m.AddBoolXOr([B[a,b],B[b,c],M[a,b,c].Not()])
N={(w,n):V(f"N{w,n}")for w in W for n in R(1,L(w))}
for w in W:
 for n in R(1,L(w)-1):s=sum(M[t]for t in T(w));m.Add(s>=n).OnlyEnforceIf(N[w,n]);m.Add(s<n).OnlyEnforceIf(N[w,n].Not())
for a,b in C(W,2):
 if(a[0],a[-1])==(b[0],b[-1]):m.AddForbiddenAssignments([M[t]for t in T(a)+T(b)],[[x in X for x in R(L(a)-2)]+[y in Y for y in R(L(b)-2)]for n in R(L(a))for X in C(R(L(a)-2),n)for Y in C(R(L(b)-2),n)if[a[x+1]for x in X]==[b[y+1]for y in Y]])
m.Minimize(sum((2*n+3)*N[w,n]for w,n in N))
s=CpSolver()
s.Solve(m)
o={k:0for k in K}
for c in C(K,2):o[c[s.Value(B[c])]]+=1
print(*sorted(K,key=lambda k:o[k]),sep="")

ফলাফল

  1. এসইএইচ, 13
  2. ডিওএলসি, 20
  3. টিএনএসইসিএ, ১৩
  4. রেশন, 80
  5. TYKCIDBRFHJUEVOXWNGZALQMPS, 32
  6. রিভিউথুউফ্যাবমিপি, 66
  7. FYCWORTMHAGINDKVESULB, 125
  8. TSHRDABXLYOWUPMIENGCF, 213
  9. PVKEFDLBMUSWOIHACNYTRG, 212
  10. XHGTPMCKSUABYORDLJEIWNFV, 596
  11. PYLFNAVEKBOCHTRGDSIZUM, 601

স্কোর পরীক্ষা করুন

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