23940 মনে রাখার জন্য একটি স্মৃতিচক্র


19

প্রধান সিস্টেম একটি হল স্মৃতিসম্বন্ধীয় শব্দের মধ্যে সংখ্যার রূপান্তর তাই তারা আরো সহজে কণ্ঠস্থ করা যাবে জন্য ডিভাইস।

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

আমাদের সরলীকৃত প্রধান সিস্টেমটি ব্যবহার করে একটি সংখ্যাকে একটি শব্দে রূপান্তর করতে:

  • প্রতিটি প্রতিস্থাপন 0সঙ্গে sবা z। (কিছু হতে পারে sএবং কিছু হতে পারে zame একই নীচে যায়))
  • প্রতিটি প্রতিস্থাপন 1সঙ্গে tবা dবা th
  • 2সঙ্গে প্রতিটি প্রতিস্থাপন n
  • 3সঙ্গে প্রতিটি প্রতিস্থাপন m
  • 4সঙ্গে প্রতিটি প্রতিস্থাপন r
  • 5সঙ্গে প্রতিটি প্রতিস্থাপন l
  • প্রতিটি প্রতিস্থাপন 6সঙ্গে jবা shবা ch
  • প্রতিটি প্রতিস্থাপন 7সঙ্গে kবা cবা gবা q
  • প্রতিটি প্রতিস্থাপন 8সঙ্গে fবা v
  • প্রতিটি প্রতিস্থাপন 9সঙ্গে pবা b
  • যদি সম্ভব হয় তবেaehiouwxy প্রকৃত ইংরেজি শব্দটি তৈরি করতে কোনও পরিমাণে যে কোনও জায়গায় অক্ষর যুক্ত করুন । একমাত্র ব্যতিক্রম হ'ল একটি বা পরে সন্নিবেশ করা যাবে না
    hsc

সংখ্যাটি আসলে 0-9 অঙ্কের কোনও স্ট্রিং হতে পারে (দশমিক বা কমা বা চিহ্ন নেই)।
শব্দটিতে কেবল ছোট হাতের অক্ষর অ্যাজ থাকতে পারে।

উদাহরণ

সংখ্যাটি 32অবশ্যই রূপান্তর করতে হবে ?m?n?, যেখানে ?বর্ণগুলি থেকে তৈরি কোনও সীমাবদ্ধ স্ট্রিং প্রতিনিধিত্ব করে aehiouwxy( যদি আপনি পছন্দ করেন তবে ফ্রি মনোয়েডের একটি স্ট্রিং )। অনেক উপায় এই একটি বাস্তব ইংরেজি শব্দ মধ্যে তৈরি করা যেতে পারে আছে: mane, moon, yeoman, ইত্যাদি

সংখ্যাটি 05হিসাবে ?s?l?বা রূপান্তরিত হতে পারে ?z?l?। কিছু সম্ভাবনা আছে easily, hassleএবং hazel। শব্দটির shawlঅনুমতি নেই কারণ এর hপরে স্থাপন করা যাবে না s; এটি হিসাবে ভুলভাবে পড়া হবে 65

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা 0-9 অঙ্কের স্ট্রিংয়ের মধ্যে নিয়ে যায় এবং সরলীকৃত প্রধান সিস্টেমে স্মৃতিবিদ্যার সাহায্যে রূপান্তরিত হতে পারে এমন সমস্ত শব্দ খুঁজে পায়।

আপনার প্রোগ্রামে একটি শব্দ তালিকার পাঠ্য ফাইলে অ্যাক্সেস রয়েছে যা সমস্ত "আসল" ইংরেজি শব্দটি কী তা নির্ধারণ করে। এই ফাইলের প্রতিটি লাইনে একটি ছোট ছোট অ্যাজ শব্দ রয়েছে এবং আপনি বিকল্পভাবে ধরে নিতে পারেন এটির পিছনে নতুন লাইন রয়েছে। এখানে পরীক্ষার জন্য আপনি ব্যবহার করতে পারেন এমন বাস্তব শব্দের একটি তালিকা। আপনি ধরে নিতে পারেন এই শব্দ তালিকার ফাইলটিকে বলা হয় f(বা আরও দীর্ঘ কিছু) এবং কোনও সুবিধাজনক ডিরেক্টরিতে রয়েছে।

একটি 35 বাইট পেনাল্টির জন্য (আপনার স্কোরগুলিতে 35 যোগ করুন) আপনি ধরে নিতে পারেন যে শব্দ তালিকাটি ইতিমধ্যে স্ট্রিংয়ের তালিকা হিসাবে একটি ভেরিয়েবলের মধ্যে লোড হয়েছে। এটি মূলত এমন ভাষাগুলির জন্য যা ফাইলগুলি পড়তে পারে না তবে যে কোনও জমা দেওয়ার সুবিধা নিতে পারে।

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

যদি কোনও সম্ভাব্য শব্দ না থাকে তবে আউটপুট (বা তালিকা) খালি থাকবে। খালি স্ট্রিংটি ইনপুট হলে আউটপুটও ফাঁকা।

স্টিন, কমান্ড লাইন বা কোনও ফাংশনের স্ট্রিং আর্গুমেন্ট হিসাবে ইনপুট নিন। শব্দ তালিকা বা এর ফাইলের নামটি কেবলমাত্র অঙ্কের স্ট্রিংয়ের ইনপুটটির অংশ হওয়া উচিত নয়।

আপনি কেবল শব্দের তালিকায় একক শব্দের সাথে মিল করছেন, শব্দের ক্রম নয়। শব্দটি noonসম্ভবত ফলাফলগুলির মধ্যে একটি হতে পারে 22, তবে শব্দ ক্রমটি no oneহবে না।

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

মনে করুন এটিই শব্দের তালিকা:

stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
zdnmrlshchvb
sthnmrlchgvb
shthnmrlchgvb
bob
pop
bop
bopy
boppy

ইনপুটটি 0123456789সমস্ত দীর্ঘ শব্দ দেওয়া উচিত zdnmrlshchvbএবং ব্যতীত shthnmrlchgvb:

stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
sthnmrlchgvb

ইনপুটটি দেওয়া 99উচিত:

bob
pop
bop
bopy

(আউটপুট শব্দগুলি যে কোনও ক্রমে হতে পারে))

স্কোরিং

বাইটস মধ্যে সংক্ষিপ্ততম জমা জয়। টাইব্রেকার প্রথমে পোস্ট জমা দেওয়ার জন্য যায়।

নিফটি সম্পর্কিত সাইট: numzi.com


1
আপনি কি এই ভিডিওটি থেকে এই চ্যালেঞ্জটির ধারণা পেয়েছেন ? কারণ আমি আসলে শুধু যে গতকাল দেখেছেন। : পি
ডুরকনব

1
@ ডুরকনব এই ভিডিওটি নয়, তবে সেই লোকটি। বছর কয়েক আগে আমাকে তার দুর্দান্ত পাঠ্যক্রমের একটি বক্তৃতা দেওয়া হয়েছিল । তিনি দারুণ ঝাপটায় কিন্তু সত্যিই ঝরঝরে স্টাফ করেন। :)
ক্যালভিনের শখ

1
বাস্তব জীবনে মেমোনিক প্রধান সিস্টেমটি ব্যবহার করতে আগ্রহী ব্যক্তিদের জন্য নোট করুন: এটি কেবলমাত্র শব্দ যা বানান নয় তা গুরুত্বপূর্ণ। সুতরাং "গ", এখানে 7 অর্থ হিসাবে তালিকাভুক্ত হওয়ার পরে, আসলে 0 টির অর্থ হতে পারে যদি শব্দটিতে এটি একটি "s" শব্দ দ্বারা উচ্চারণ করা হয় (যেমন "টেক" = 0 তে থাকে)। তবে, আমি নিশ্চিত যে ওপি চ্যালেঞ্জকে সহজতর করেছে, যেমন একটি সম্পূর্ণ শব্দের তালিকার চেয়ে পুরো শব্দবিজ্ঞানের একটি অভিধান হিসাবে আসা আরও শক্ত। ওহ, এবং 23940 এর একটি রেন্ডারিং হ'ল "সংখ্যা"।
এরিক

@ এরিক আমি বলেছি যে আমরা পোস্টের দ্বিতীয় বাক্যে বানান ভিত্তিক সংস্করণ ব্যবহার করছি ...
ক্যালভিনের শখ

আমি এখন এটি দেখতে পাচ্ছি, যদিও আমি প্রথমে এটি মিস করেছি - তবে এটি এখনও আমার কাছে মনে হয় যে আপনার ব্যাখ্যাটি সামান্য কিছুটা আরও ছড়িয়ে যেতে পারে এবং একটি উদাহরণ দেওয়া হয়েছে বা দুটি দেওয়া হয়েছে।
এরিক

উত্তর:


6

পার্ল, 87 84

open A,f;"@ARGV"eq s/[cs]h/j/gr=~y/stnmrljkfpzdcgqvb\0-z/0-90177789/dr&&print for<A>

কমান্ড লাইন প্যারামিটার হিসাবে ইনপুট নেয়:

$perl m.pl 23940

শব্দ তালিকাটি যদি স্ট্যান্ডার্ড ইনপুটটিতে অনুমতি দেওয়া হয় তবে কিছুটা ছোট করা যায়:

$perl -lnE'INIT{$;=pop}$;eq s/[cs]h/j/gr=~y/stnmrljkfpzdcgqvba-z/0-90177789/dr&&say' 99 <f

এর Aঅর্থ কী open A,f?
ফেভারস

@ ফেয়ারসাম একটি ফাইল হ্যান্ডেল পরে ফাইল ( <A>) পড়তে ব্যবহৃত হয় ।
নটকি

4

পাইথন 2, 215 208 বাইট

এই পাইথন সলিউশন কমান্ড লাইন আর্গুমেন্ট দ্বারা সূচিযুক্ত অংশগুলি থেকে একটি রেজেক্স তৈরি করে, তারপরে প্রতিটি শব্দের সেই (বরং বৃহত) রেজেক্স দিয়ে পরীক্ষা করে।

import re,sys
a='[sz] (d|th?) n m r l (j|sh|ch) [kcgq] [fv] [pb]'.split()
b=z='((?<![sc])h|[aeiouwxy])*'
for i in sys.argv[1]:b+=a[int(i)]+z
for d in open('f'):
 d=d.strip()
 if re.match('^'+b+'$',d):print d

মিনিফায়ারের আগে আসল উত্স:

import re,sys
regexbits = '[sz] (d|th?) n m r l (j|sh|ch) [kcgq] [fv] [pb]'.split()

regex = other = '((?<![sc])h|[aeiouwxy])*'
for i in sys.argv[1] :
    regex += regexbits[int(i)] + other
print regex     # DEBUG

for word in open('f'):
    word = word.strip()
    if re.match('^'+regex+'$', word) :
        print word

উদাহরণস্বরূপ, পরীক্ষার জন্য রেজেেক্সটি 99হ'ল:

^((?<![sc])h|[aeiouwxy])*[pb]((?<![sc])h|[aeiouwxy])*[pb]((?<![sc])h|[aeiouwxy])*$

(?<![sc])hবিট উপাদান যা নিশ্চিত করে তোলে একটি "নেতিবাচক বিবৃতি পিছনে তাকান" হয় hএকটি অনুসরণ না sবা cসাধারণ ফিলার অংশে।

ধন্যবাদ ক্যালভিন এই চ্যালেঞ্জটি আমাকে আমার মরিচা দিয়ে উঠেছে দক্ষতা অর্জন করতে উত্সাহিত করেছিল।


b=c='((?<![sc])h|[aeiouwxy])*'দুটি বাইট সংরক্ষণ করা হবে।
matsjoyce

t|th -> th?একটি বাইট সংরক্ষণ করুন
Sp3000

সরাসরি মান (i) নিয়ে আপনি মানচিত্রটি এড়াতে পারবেন।
xnor

দরকারী গল্ফিং টিপসের জন্য ম্যাটসয়াসেস, এসপি 3000 এবং এক্সনরকে ধন্যবাদ। এখন সম্পাদিত পরামর্শগুলি প্রয়োগ করা হয়েছে।
লজিক নাইট

2

পাইথন 3, 170

import sys,re
t=str.maketrans('sztdnmrljkcgqfvpb','00112345677778899','aehiouwxy\n')
for s in open('f'):re.sub('sh|ch','j',s).translate(t)!=sys.argv[1] or print(s,end='')

পঠনযোগ্য সংস্করণ:

import sys, re

table = str.maketrans('sztdnmrljkcgqfvpb', '00112345677778899', 'aehiouwxy\n')

for line in open('f'):
    line = re.sub('sh|ch', 'j', line)
    if line.translate(table) == sys.argv[1]:
        print(line, end='')

কোডটি thরিডানডান্ট (যেহেতু এটি একই সংখ্যায় ম্যাপ করে tএবং hপ্যাডিং চরিত্রটি) ব্যবহার করে।

স্ট্যাটিক maketransফাংশনটি দ্বিতীয় আর্গুমেন্টের সাথে প্রথম যুক্তির চরিত্রগুলি এবং তৃতীয় যুক্তির অক্ষরগুলির ম্যাপিং একটি সারণী তৈরি করে None(যার ফলে সেই অক্ষরগুলি মুছে ফেলা হবে)।

এর সরাসরি যুক্তি হিসাবে টেবিলটি তৈরি করে চূড়ান্ত কোডটি কয়েকটি বাইট সংক্ষিপ্ত করা যায় translate


আপনার নিয়মিত প্রকাশের জন্য আপনি sys.argv [1] এবং '[sc] h' এর পরিবর্তে ইনপুট () ব্যবহার করে কয়েকটি বাইট সংরক্ষণ করতে পারেন।
স্বায়ত্তশক্তি

@swstephe। প্রতিক্রিয়াটির জন্য ধন্যবাদ, তবে আমি input()ব্যবহার করতে পারি বলে মনে করি না, কারণ এটিকে একটি লুপের ভিতরে ডাকা হয়। এছাড়াও, আপনার প্রস্তাবিত রেজেক্সের সমান দৈর্ঘ্য আমি ইতিমধ্যে ব্যবহার করছি (5 বাইট)।
এখুমোরো

আমি "z, t = ইনপুট (), str.maketrans ..." এর মতো কিছু ভাবছিলাম তখন sys.argv এর পরিবর্তে কেবল z ব্যবহার করুন use ঠিক আছে, আমি ভেবেছিলাম আমার রেজেক্সটি 4-বাইট।
স্বায়ত্তশক্তি

2

সেড, পেস্ট, গ্রেপ, কাটা - 109

sed -e 's/[sc]h/6/g;s/[aehiouwxy]//g;y/sztdnmrljkcqgfvpb/00112345677778899/' w|paste w -|grep " $1$"|cut -f1

"ডাব্লু" ফাইল নেয়, প্রতিটি শব্দকে তার সংখ্যায় রূপান্তর করে, মূলটিতে পেস্ট করুন, সংখ্যার জন্য গ্রেপ করুন এবং শব্দটি মিলেছে return নোট করুন যে গ্রেপের পরে উদ্ধৃতিটির পরে শ্বেত স্থানটি একটি ট্যাব, পেস্টের ডিফল্ট ডিলিমিটার।

আমি জানি পার্ল এগিয়ে চলেছে, উদাহরণ হিসাবে আরও ভাল শেল সংস্করণ চেয়েছিল।

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


sedপার্লের ওপেন এবং @ARGVওভারহেড এড়াতে আমি খাঁটিতে আমার উত্তরটি রূপান্তর করার বিষয়ে ভাবছিলাম , তবে রেঞ্জের অভাব এবং y///এটির কার্যকারিতা মুছে ফেলার জন্য । আশ্চর্যের বিষয় যদিও কোনও ভেরিয়েবল না থাকলেও আপনি সরাসরি যুক্তিটি প্রকাশ করতে পারেন sed। এখানে আমার 92 টি সমাধান:sed -e'h;s/[sc]h/6/g;y/sztdnmrljkcqgfvpb/00112345677778899/;s/[^0-9]*//g;T;s/^$1$//;x;t;d' f
নটকি

মনে হচ্ছে এটি কাজ করে, কেন এটি একটি উত্তর না?
স্বস্তি

1

বাশ + কোর্টিলস, 216

sed -n "$(sed 's/[aeiouwxy]//g
:l
s/\([^sc]\)h/\1/g
tl'<w|grep -nf <(eval printf '%s\\n' `sed 's/0/{s,z}/g
s/1/{t,th,d}/g
y/2345/nmrl/
s/6/{j,sh,ch}/g
s/7/{k,c,g,q}/g
s/8/{f,v}/g
s/9/{p,b}/g'<<<$1`)|sed s/:.\*/p/)" w
  • একটি ফাইলের শব্দের তালিকা বলা হয় w
  • অভ্যন্তরীণতমগুলি sedতাদের সম্ভাব্য প্রতিস্থাপনের সাথে অঙ্কগুলি প্রতিস্থাপন করে
  • eval printfব্যবহারসমূহ বক্রবন্ধনী প্রসারণও শেল সব সম্ভব বদল আউট প্রসারিত করতে
  • sed1 ম লাইনের দ্বিতীয়টি শব্দ তালিকা থেকে সরিয়ে দেয় aeiouwxyএবং h(যখন এর আগে নয় [sc])
  • গ্রেপ লাইন সংখ্যা সহ সমস্ত মিল মুদ্রণ করে
  • যেহেতু আমরা বাইরে ছিনতাই হয়েছে aeiouwxyএবং hশব্দ তালিকা থেকে গত sedঅন্য পালাক্রমে, grep ফলাফল (প্রতিটি ম্যাচের লাইন নম্বর) sedঅভিব্যক্তি, যা দূরতম দ্বারা প্রক্রিয়াকৃত হয় sedwordlist থেকে সব সম্ভব শব্দ প্রকাশ করতে।

আউটপুট:

শব্দ তালিকা ফাইলটি কমান্ড-লাইন আর্গ হিসাবে নির্দিষ্ট করা হয়েছে, এবং স্মরণ করানোর জন্য নম্বরটি অনুসরণ করুন:

ubuntu@ubuntu:~$ ./numzi.sh 99
bob
pop
bop
bopy
boppy
$ ./numzi.sh 0123456789
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
sthnmrlchgvb
$ 

@ ক্যালভিনের শখগুলি সম্পন্ন হয়েছে
ডিজিটাল ট্রমা

দেখে মনে হচ্ছে আপনি নিজের উদাহরণটি আপডেট করতে ভুলে গেছেন।
ক্যালভিনের

-1

টিআর, সেড, গ্রেপ, এক্সার্গস, শ, 77

tr 0123456789 ztnmrljkfp|sed 's/ */[aehiouwxy]*/g'|xargs sh -c 'grep -x $0 f'

Stdin নম্বর আশা এবং শব্দ তালিকা ফাইলে সংরক্ষণ করা উচিত f

সমস্ত প্রতিস্থাপন ব্যবহার করে না (1 সর্বদা জেড থাকবে, 7 সর্বদা কে থাকবে), সুতরাং এটি একটি অলস সমাধান বলা যেতে পারে, তবে এটি [1-100] তে 95 সংখ্যার জন্য কমপক্ষে একটি স্মৃতিচক্রের সন্ধান করে।


3
প্রশ্নটি আপনাকে জিজ্ঞাসা করে যে আপনি শব্দ তালিকায় সমস্ত মিলে যাওয়া শব্দগুলি খুঁজে পান। আপনি 1সর্বদা zবা 7সর্বদা হতে পারবেন না k। এটি অবৈধ।
ক্যালভিনের শখ

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