এক হাতে শব্দ খুঁজে


12

'অতিরঞ্জিত' এমন একটি শব্দের উদাহরণ যা বাম হাতে সাধারণ কিওয়ার্টি কীবোর্ড মানচিত্রে টাইপ করা যায়। 'একচেটিয়াকরণ' ডান হাতের জন্য একটি উদাহরণ।

wordsএকদিকে টাইপ করা যায় এমন শব্দের জন্য ইউনিক্স ফাইল অনুসন্ধান করা। আউটপুট দুটি লাইন হওয়া উচিত: বাম হাতের জন্য এই জাতীয় শব্দের স্থান পৃথকীকরণের তালিকা এবং তারপরে ডান হাতের জন্য তালিকা। যেমন

a abaft abase abased abases abate abated abates abbess abbesses ...
h hi hill hilly him hip hippo hippy ho hokum ...

বাম হাতের চিঠিগুলি হ'ল:

qwertasdfgzxcvb

ডান হাতের অক্ষরগুলি হ'ল:

yuiophjklnm'

বড় হাতের অক্ষর এক হাতে হিসাবে গণনা; ডায়াক্রিটিক্স সহ অক্ষরগুলি দ্বি-হাত হিসাবে গণনা করে এবং তাই সেগুলিতে থাকা শব্দগুলিকে উপেক্ষা করা যায়।


2
বড় হাতের অক্ষর দুটি হাত প্রয়োজন? আমি মনে করি যে "é" এর মতো অক্ষরগুলি উভয় হাত দিয়ে টাইপ করা যায় না, ঠিক? অবশেষে, আমি ধরে নিয়েছি অ্যাস্টোস্ট্রোফ একটি সঠিক ডান হাতের চাবি, সঠিক?
স্টিভেন রাম্বালস্কি

4
বাম-হাত এবং ডান-হাতের অক্ষরের সংজ্ঞা ছাড়াই এই প্রশ্নটি স্বয়ংসম্পূর্ণ নয়।
পিটার টেলর

4
একটি জিনিস যা নিয়মিত বহিঃপ্রকাশগুলি ব্যবহার করে লোকদের সহায়তা করতে পারে: [a-gq-tv-xz]বাম-হাতের অক্ষর এবং ['h-puy]ডান হাতের অক্ষরের জন্য ব্যবহারগুলি সমস্ত লেখার চেয়ে সামান্য খাটো।
পল প্রেস্টিজ

উত্তর:


7

সেড, 78 বাইট

1{x;s/^/! /;x};/^['h-puy]*$/IH;/^[a-gq-tv-xz]*$/I{G;x};${x;y/\n/ /;s/! */\n/p}

GNU সেড প্রয়োজন, সঙ্গে চালানো sed -n -f words.sed < /usr/share/dict/words


7

বাশ ( 100 89 টি চর)

for x in a-gq-tvwxz h-puy\'
do grep -iE ^[$x]*$ /usr/share/dict/words|tr '
' \ 
echo
done

নোট করুন যে 21 টি অক্ষর ফাইলের পুরো পথে চলে যায়: যদি আমাদের ধরে নিতে দেওয়া হয় যে পিডাব্লুডিটি / ইউএসআর / শেয়ার / ডিক হয় তবে তার মধ্যে 16 টি সংরক্ষণ করা যায়।

সংক্ষিপ্ত রেজেক্সসের জন্য ক্রোনকে ক্রেডিট ।


1
"^ ([$ x]) * $" রেইজেক্স হওয়া উচিত
রব

4

বাশ, 86

for x in a-gq-tvwxz h-pyu\'
do egrep ^[$x]*$ /usr/share/dict/words|tr '
' \ 
echo
done

টেলররা for, আমার পূর্বপুরুষ, ক্রনগুলি চার্সের গ্রুপিং of

সংজ্ঞা অনুসারে, আপনি যদি দুটি হাত দ্বারা অন্ধ লিখে টাইপ করেন, আপনি যদি বড় হাতের অক্ষর তৈরি করতে চান তবে আপনি সর্বদা ডান হাতের একটি বড় হাতের অক্ষর তৈরি করতে বাম হাত ব্যবহার করেন এবং বিপরীতে।

অবশ্যই আপনি Wকেবল বাম হাত দিয়ে বড় হাতের উত্পাদন করতে পারেন তবে আপনি যদি পছন্দ junkকরেন তবে বাম হাত দিয়েও উত্পাদন করতে পারেন।


চিঠিগুলিতে গ্রুপিংয়ে আমাকে মারধর, ভাল কাজ!
রব

আমার এবং পিটার টেলারের মধ্যে এটি একটি দৌড়ের অবস্থা ছিল। তাঁর 100 (101?) চর সমাধানটি আমি প্রকাশিত হয়েছিল, যখন আমি আমার পোস্ট এবং অপ্টিমাইজেশন শুরু করি, তবে তিনি আমার আগে তাঁর উন্নতি শেষ করেছিলেন, যা আমি আমার নিজের শেষ করার পরে পর্যবেক্ষণ করেছি। আমি পোস্টটি একই ভাষায় তৈরি করতে পারতাম না, কেবল ইরেপ এবং -i ছাড়া, তবে তার পরিবর্তে একটি মন্তব্য করতে পারতাম, যদি তিনি কিছুটা মিনিট দ্রুত থাকতেন।
ব্যবহারকারী অজানা

আমি রেজিএক্সকে সংশোধন করার জন্য মন্তব্যটি করার পরে, এবং আমি এটি করার সুযোগ পাওয়ার আগে বাম কাজটি করার ঠিক পরে এটি সম্পর্কে ভেবেছিলাম। বাড়িতে পৌঁছানোর সময় পর্যন্ত এটি সম্পর্কে সম্পূর্ণরূপে ভুলে গেছি।
রব

আপনার চূড়ান্ত অনুচ্ছেদে হ'ল স্টিভেন রাম্বালস্কি এবং আমি স্পষ্টকরণের জন্য চাপ দিয়েছি এবং বড় হাতের হিসাবে বড় হাতের হিসেব যে স্পষ্টতা তা প্রকাশিত হওয়ার 24 ঘন্টারও বেশি সময় আগে পেয়েছে, সুতরাং এটি আসলে অনুমান করার মতো নয়।
পিটার টেলর

3

বোর্ন শেল, 55 টি অক্ষর

(বা বোর্নের মতো কোনও শেল তবে bash, zshবা yash)

w=$1;f()echo `grep -ixe[$1]*<$w`;f a-gq-tvwxz;f h-puy\'

হিসাবে ডাকা হয় sh -f words.sh /usr/share/dict/words। (অবশ্যই, সিস্টেম যেখানে উপর shআসলে bashকিছু লিনাক্স ডিস্ট্রিবিউশন মত, ব্যবহার অন্য বোর্ন মত মত শেল ash, ksh, mksh, pdksh, posh...)


2

জাভাস্ক্রিপ্ট (নোড), 201 বাইট

f=require('fs');c=d='';r=(a=f.readFileSync('/dev/stdin')+c).split('\n');a.
replace(/[aqzxswcdevfrbgt]/ig,'').split('\n').map(function(k,i){k==r[i]&&(
d+=k+' ');!k.length&&(c+=r[i]+' ')});console.log(c,d)

এটি সম্ভবত অন্য একটি ভাষাতে আরও সংক্ষিপ্ত সংস্করণে আবারও লেখা যেতে পারে, তবে আমি নোডকে একবার চেষ্টা করে দেখতে চেয়েছিলাম।

সাথে চালাও node words.js < /usr/share/dict/words


1

প্রশ্ন ( 121 140 বাইট)

আউটপুট হুবহু এক নয় (স্পেসের পরিবর্তে ব্যাকটিকস) তবে এটি কিউ স্ট্রিংয়ের ধরণগুলি কীভাবে প্রদর্শন করে তার লক্ষণিক।

i:read0`:/usr/share/dict/words;
0N!/:i:`$/:i where each (min each) each flip i in/:\:(x,upper x:"qwertasdfgzxcvb";y,upper y:"yuiophjklnm");

সম্পাদনা: মিশ্র কেস, +20 অক্ষর পরিচালনা করতে হয়েছিল


আপনি গলফ এই জন্য 111. যথেষ্ট`$'i(&:')(min'')(+)(i:read0`:/usr/share/dict/words)in/:\:(x,upper x:"qwertasdfgzxcvb";y,upper y:"yuiophjklnm'")
tmartin

1

রুবি, 112 92 টি অক্ষর

সম্পাদনা: এটি মজাদার না হলেও এটি খাটো:

puts %w(a-gq-tv-xz 'h-puy).map{|r|File.read('/usr/share/dict/words').scan(/^[#{r}]+$/i)*' '}

মূল:

puts File.read('/usr/share/dict/words').scan(/(^[a-gq-tv-xz]+$)|(^['h-puy]+$)/i).transpose.map{|w|w.compact*' '}

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


1

পাইথন, 130 বাইট

a="\n"
b=""
try:
 while 1:v=raw_input();m=[x.lower()in"yuiophjklnm'"for x in v];v+=" ";a+=v*all(m);b+=0**any(m)*v
except:print b+a

সাথে চালাও python one_handed_words.py < /usr/share/dict/words


আমি কি এখানে পোস্ট করা সমাধানগুলির একটি গ্রহণ করতে, এটি সংক্ষিপ্ত করে, এবং এটি আমার পোস্টে রাখার অনুমতি পাচ্ছি?
স্নুপুনস

যদি এটি কেবলমাত্র ছোট উন্নতি হয় তবে মন্তব্য পোস্ট করা আরও বন্ধুত্বপূর্ণ। আপনি যদি উল্লেখযোগ্য পরিবর্তন আনছেন তবে নতুন উত্তর পোস্ট করা ভাল, তবে আপনি যে উত্তরটির উপর ভিত্তি করে চলেছেন তার (to) ক্রেডিট দেওয়া ভাল।
gnibbler

1

হাস্কেল (১৯১)

import Char
g x=all(`elem`x)
f m[]=m
f[x,y](w:ws)|g"quertasdfgzxcvb"w=f[w:x,y]ws|g"yuiophjklnm'"w=f[x,w:y]ws|1<2=f[x,y]ws
main=getContents>>=mapM(putStrLn.unwords).f[[],[]].lines.map toLower


1

পার্ল, 72 বাইট

$a{/^['h-puy]+$/i-/^[a-gq-tv-xz]+$/i}.=y/\n/ /rfor<>;print@a{1,-1,$,=$/}

সাথে চালানো perl words.pl /usr/share/dict/words


আমি বাক্যগঠন ত্রুটি পাবেন: Bareword পাওয়া words.pl লাইন 1 এ যেখানে অপারেটর প্রত্যাশিত কাছাকাছি "TR / \ N / / rfor"
Wim

1
এটি আমার জন্য পার্ল 5.14.2 তে কাজ করে, এবং এর জন্য পার্ল 5.14 এবং তার বেশি প্রয়োজন (এটি যেখানে ধ্বংসাত্মক প্রতিস্থাপনের পতাকাটি যুক্ত rকরা হয়েছিল)
হস্তুরকুন

0

পাইথন - 152 137 টি অক্ষর (স্বাক্ষরিত)

r,a,b=set("YUIOPHJKLNM'"),[],[]
try:
 while 1:
  w=raw_input()
  s=set(w.upper())
  if r|s==r:a+=w
  if s-r==s:b+=w
except:for x in a,b:print' '.join(x)

সম্পাদনা করুন: উচ্চতর কেস এবং অ্যাস্টোস্ট্রোফ পরিচালনা করুন।


0

পাইথন, 243 অক্ষর

সম্পাদনা করুন: প্রশ্ন অনুসারে এখানে আরও মেনে চলার প্রোগ্রাম রয়েছে:

import sys
def o(w):
 r="yuiophjklnm'";f=2;w=w.lower()
 for l in w:
  if(f==1)&(l in r)|(f==0)&(l not in r):return 2
  f=l not in r
 return f
y=[[],[],[]]
for w in sys.stdin.read().split('\n'):y[o(w)].append(w)
for i in y[0:2]:print' '.join(i)

অনুরোধ করুন: python onehanded.py > /usr/share/dict/wordsবা নিউলাইন-বিচ্ছিন্ন শব্দের সাথে অন্য কোনও শব্দ ফাইল

পুরাতন: ১৪১ টি অক্ষর, কেবল একটি একক-শব্দ ফাংশন function

ফিরে আসে rightবা leftযদি wএকহাঁইড হয়, এবং bothযদি উভয় হাত ব্যবহার করা হয়।

def o(w):
 r="yuiophjklnm'";f=2
 for l in w:
  if(f==1)&(l in r)|(f==0)&(l not in r):f=2;break
  f=[1,0][l in r]
 return'rlbieogfththt'[f::3]

আপনি কি দয়া করে এটি একটি কার্যনির্বাহী প্রোগ্রামে পরিণত করবেন বা চরিত্রের গণনাটি সরিয়ে ফেলবেন? অন্যথায়, শিরোনাম বিভ্রান্তিকর।
স্টিভেন রাম্বালস্কি

0

প্রশ্ন, 95 (111 হার্ডকডড ডিক পাথ সহ)

{`$'e[(w(&)l(w)in .Q.a except a)],(e:enlist)w(&)(l:all')(w:(_)read0 -1!`$x)in a:"yuiophjklnm'"}

ব্যবহার

q){`$'e[(w(&)l(w)in .Q.a except a)],(e:enlist)w(&)(l:all')(w:(_)read0 -1!`$x)in a:"yuiophjklnm'"} "/usr/share/dict/words"
`a`a`aa`aa`aaa`aaa`aaaa`aaaaaa`aaas`aaberg`aae`aaee`aaf`aag`aar`aara`aarc`aas..
`h`h`hh`hi`hi`hi`hih`hiko`hikuli`hili`hill`hill`hillo`hilly`hilly`hilo`hilum`..

আপনি যদি হার্ডকোড করেন তবে আরও 14 টি চর

`$'e[(w(&)l(w)in .Q.a except a)],(e:enlist)w(&)(l:all')(w:(_)read0`:/usr/share/dict/words)in a:"yuiophjklnm'"

0

জে, 109

1!:2&2;:^:_1('qwertasdfgzxcvb';'yuiophjkl''nm')((#@[>[:>./i.)&>/#]);:1!:1<'/usr/share/dict/words'[9!:37]0,3$_

আমি নিশ্চিত যে এটি আরও ভালভাবে করা যায়, আমি জানি না কীভাবে স্ট্রিং ম্যানিপুলেশন করতে হয় :-(


0

পাইথন: 122

import os
S=set("yuiophjklnm'")
c=os.read(0,9**9).lower().split()
print"\n".join(w for w in c if set(w)<=S or set(w)^S>=S)

এর সাথে চালু হয়েছে:

python name_of_program.py < /usr/share/dict/words

ধারণাটি বেশিরভাগই ডিলন কাওয়ারের সমান, তবে আমি বিচ্ছিন্নতার জন্য একটি set(w)<=Sউপসেটটি নির্দেশ করতে ব্যবহার করি set(w)^S>=S

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