Semordnilaps খুঁজুন


21

সেমর্ডনিলেপস (হিটোরিপালিনড্রোমস, অর্ধ-প্যালিনড্রোমস, হাফ-প্যালিনড্রোমস, রিভার্সগ্রামস, মাইনোরেটিসস, রিভারসিবল অ্যানাগ্রাম, ওয়ার্ড রিভার্সালস বা অ্যানাড্রোমস নামেও পরিচিত) এমন শব্দ যা পিছনের দিকে বানান করলেও এটি শব্দ। কয়েকটি উদাহরণ হ'ল:

  • ওয়ার্ড <=> আঁকুন
  • খনিত <=> ডেনিম
  • অংশগুলি <=> স্ট্র্যাপ

ধনাত্মক পূর্ণসংখ্যার এন দেওয়া হয়েছে (ফাংশন আর্গুমেন্ট বা এসটিডিআইএন এর মাধ্যমে), ইংরেজি শব্দের এই তালিকা থেকে semordnilaps এর তালিকাটি ফিরিয়ে দিন / আউটপুট দেয়, ঠিক হ'ল এন অক্ষর রয়েছে। শব্দের তালিকাটি আপনার কম্পিউটারে স্থানীয়ভাবে সংরক্ষণ করা যেতে পারে: নামক একটি পাঠ্য ফাইল হিসাবে w.txt। আপনি url থেকেও তালিকাটি পেতে পারেন তবে এটি বাইট গণনায় অন্তর্ভুক্ত হবে।

নিয়মাবলী:

  1. Palindromes semordnilaps হয় না! সুতরাং, "দুপুর", "রটার" এবং "রাডার" শব্দগুলিকে তালিকায় অন্তর্ভুক্ত করা উচিত নয়।
  2. কেবলমাত্র একটি শব্দ (একটি semordnilap জোড়া) তালিকায় অন্তর্ভুক্ত করা উচিত। সুতরাং, "কুকুর" তালিকায় থাকলে, ""শ্বর" হওয়া উচিত নয় (এটি কোনটি অন্তর্ভুক্ত রয়েছে তা বিবেচনা করে না))
  3. যদি কোনও semordnilaps না থাকে তবে আউটপুটটি খালি স্ট্রিং, 0, FALSE বা অন্য কোনও কিছু হওয়া উচিত যা বোঝায় যে কোনও ফলাফল নেই। কোনও ফলাফল না থাকলেও ফাংশনটি অবশ্যই কাজ করবে।

এটি কোড গল্ফ তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়!


লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে ক্যাটালগ তৈরি করে a) ভাষার প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেম্পলেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি পৃথকভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes



5
একবচন হওয়া Emordnilapএবং বহুবচন হওয়া উচিত নয় Semordnilap? ;)
FryAmTheEggman

1
"প্যালিনড্রোমগুলি সেমর্ডনিলেপস নয়!" বাহ, সেই বাক্যটি / বুলেটটি আরও অস্পষ্ট হতে পারে না তবে এখন আপনি কী বোঝাতে চেয়েছেন তা আমি দেখতে পাচ্ছি। যে শব্দগুলি বিপরীত হয় তখন সেগুলি Semordnilaps নয়।
বিড়াল

উত্তর:


10

পাইথ , 23 (18 কোড, 5 প্রয়োজনীয় এসটিডিএন)

J'f&qlTQ&}_TJ>_TTJ

এটি মোটামুটি সোজা সমাধান।

Jশব্দের তালিকা সঞ্চয় করে। তারপরে আমরা শব্দের তালিকাতে ফিল্টার করব ( f J) শব্দের দৈর্ঘ্যের উপর ইনপুট ( qlTQ), বিপরীত শব্দটি তালিকায় রয়েছে ( }_TJ), এবং শব্দের বিপরীতটি শব্দের চেয়ে বড় ( >_TT)। শেষ শর্তটি নিশ্চিত করে Tযে প্যালেন্ড্রোমিক নয়, এবং এই জুটির মধ্যে কেবল একটি মুদ্রিত is ফলাফল তালিকা মুদ্রিত হয়।

পাইথ যেভাবে কাজ করে, কোনও ফাইল খোলার একমাত্র উপায় হল STDIN এ এর ​​নাম পাওয়া। এই কারণেই আমি w.txtআমার স্কোরগুলিতে এসটিডিএন বাইটের 5 টি গণনা করেছি।

উদাহরণ রান:

$ pyth -c "J'f&qlTQ&}_TJ>_TTJ" <<< '6
w.txt'
['animal', 'denier', 'diaper', 'drawer', 'pupils', 'recaps', 'redraw', 'sleets', 'snoops', 'sports']

10

রুবি, 74 বাইট

f=->n{i=IO.read('w.txt').split
p *i&[f.reverse]if f.size==n while f=i.pop}

উপাদানগুলি অপসারণ করে তালিকার উপরে আইট্রেট করা হয় যা প্যালিনড্রোমগুলি এড়িয়ে যায় এবং "স্ট্রেসড" এবং "মিষ্টান্ন" উভয়ই আউটপুট করে। ফাংশনটির জন্য একই পরিবর্তনশীল নামটি ব্যবহার করে এবং আয়রেটরটি একটি রুবি সিনট্যাক্স কিরকের কাছাকাছি আসে: যদিও f=i.popআগে মূল্যায়ন করা হয় f.reverseতবে fইতিমধ্যে কিছু বোঝানো না হলে লাইনটি বিশ্লেষণ করবে না । আমি ব্যবহার করতে পারে p


4

বশ 134 157 118 বাইট

f () { comm -12 <(sort w.txt) <(rev w.txt|sort)|while read w; do ((${#w}==$1))&&[[ $w<$(rev<<<$w) ]]&&echo $w; done; }

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


আপনি যেভাবেই কম শব্দ থেকে শব্দ এবং এর প্রতিবিম্ব উভয়ই পাবেন, আপনি কেবল "$ w" প্রতিধ্বনি করতে পারেন এবং অতিরিক্ত বাছাই এবং লেজ দিয়ে বিরক্ত করবেন না। যদি আপনি এটি করেন তবে ফলাফলটি ইতিমধ্যে বাছাই করা উচিত, তাই চূড়ান্ত বাছাইটিও সরানো যেতে পারে।
ওরাল

আমি অনুসরণ করি না আপনার পদ্ধতির ক্ষেত্রে আমি কীভাবে ছাড় দেব?
অ্যারন ডেভিস 21

এছাড়াও, আমি প্যালিনড্রোমগুলি সরিয়ে দিতে সম্পূর্ণ ভুলে গেছি। সংশোধন করা হয়েছে।
অ্যারন ডেভিস 21

দুঃখিত, ঘুম বঞ্চনা ... তাদের মধ্যে কেবল একটি রাখার জন্য আপনার অবশ্যই বিপরীতটির সাথে তুলনা করা দরকার তবে আপনাকে প্যালিনড্রোমগুলি যত্ন নেওয়ার দরকার নেই এবং আমার বাকী মন্তব্যগুলি এখনও বৈধ। এবং এখন আপনি এটি উল্লেখ করেছেন, ব্যাশের একটি স্ট্রিং তুলনা অপারেটর রয়েছে, তাই &&[[ $w > $(rev<<<$w) ]]&& echo $wএখনও এড়ানো যায় sort|tail -1। এর সাথে, আমি মনে করি আপনি এমনকি চূড়ান্ত বাছাই করতে পারেন এবং অনন্য, কারণ এটি প্যালিনড্রোমগুলি সরিয়ে দেয় এবং কেবল একটি শব্দের আউটপুট দেয় ।
অরিয়ান

এছাড়াও, শুরুতে একটি অকেজো বিড়াল: <(sort w.txt)ঠিক আছে।
অরিয়ান

4

পাইথন, 126 125 120 বাইট

N=input()
J=open("w.txt").read().split()
for c in set(J):
 if N==len(c)and c!=c[::-1]and c[::-1]in J:print c;J.remove(c)

খুব সোজা সমাধান।


এটি সংজ্ঞায়িত করার চেয়ে কম বলে মনে হচ্ছে k=c[::-1]। এছাড়াও, আপনি কি set()দ্বিতীয় বার কল করতে পারেন না ? আমি মনে করি না ফাইলটিতে পুনরাবৃত্তি আছে?
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান: প্রকৃতপক্ষে এটি নির্ধারণ করতে 11 টি অক্ষর লাগবে k(9 সংজ্ঞায়নের জন্য প্লাস 1 এর জন্য নিউলাইন প্লাস 1 জায়গার জন্য) তবে আমি কেবলমাত্র 10 টি অক্ষর সংরক্ষণ করব (6 এর জন্য বের করে ফেলুন [::-1]তবে 1 কারণ যুক্ত করুন যার পরে আমার একটি স্থান প্রয়োজন)। সম্পর্কে set, আমার Jএকটি সেট হওয়া দরকার কারণ আমি নো-ডুপের নিয়ম মেটাতে ব্যবহৃত শব্দগুলি এটি থেকে
সরিয়েছি

N==len(c)andএকটি স্থান বাঁচায় স্যুইচিং ।
isaacg

@ আইস্যাকগ: আহ হ্যাঁ, টাই
ক্লাউডিয়ু

আপনি সংক্ষিপ্ত একটি =- হওয়া উচিত ==
isaacg

3

সিজেম, 48 47 45 42 38 বাইট

যেহেতু ইউআরএল গণনা করতে হবে, তাই আমি একই ইউআরএল সংক্ষিপ্তরটিকে অপ্টিমাইজার হিসাবে ব্যবহার করছি।

"ri.ms/§"gDcN+/{,ea~i=},_Wf%&{_W%>},N*

§বর্ধিত হওয়া ASCII অংশ, তাই কোডে প্রতিটি অক্ষর একটি একক বাইটে এনকোড করা যেতে পারে।

অপ্টিমাইজারের মতো, আপনাকে জাভা ইন্টারপ্রেটার ব্যবহার করতে হবে এবং স্থানীয়ভাবে কোনও ফাইল থেকে চালাতে হবে, বলুন semordnilap.cjamএবং তারপরে

java -jar cjam-0.6.2.jar semordnilap.cjam <N>

সুতরাং ইনপুট একটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে দেওয়া হয়।

এটি কীভাবে কাজ করে (সামান্য পুরানো):

"Prepare word list:";
"ri.ms/§"gDcN+/ 
"ri.ms/§"g      "Fetch list from shortened URL.";
          DcN+  "Create \r\n string.";
              / "Split input into lines.";

"Process input:";
{,ea~i=},
{      }, "Filter the list.";
 ,        "Get word length.";
  ea      "Push command-line arguments.";
    ~     "Unwrap array.";
     i    "Convert to integer.";
      =   "Check equality.";

"Find all palindromes and semordnilaps:";
_Wf%&
_     "Duplicate list.";
 Wf%  "Reverse each line.";
    & "Set intersection.";

"Remove duplicates and palindromes:";
{_W%>},N*
{    },   "Filter list.";
 _W%      "Duplicate word, reverse.";
    >     "Check lexicographic order.";
       N* "Join with newlines.";

ফলাফলের স্ট্রিংটি স্বয়ংক্রিয়ভাবে প্রোগ্রামের শেষে মুদ্রিত হয়।


3

জাভা, 280 218 বাইট

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

void a(int n)throws Exception{List<String>l=Files.readAllLines(Paths.get("w.txt"));for(String s:l){String c=new StringBuilder(s).reverse()+"";if(s.length()==n&&c.compareTo(s)>0&&l.contains(c)){System.out.println(s);}}}

সম্প্রসারিত:

void a(int n)throws Exception{
    List<String>l=Files.readAllLines(Paths.get("w.txt"));
    for(String s:l){
        String c=new StringBuilder(s).reverse()+"";
        if(s.length()==n&&c.compareTo(s)>0&&l.contains(c)){
            System.out.println(s);
        }
    }
}

একই সাথে প্যালিনড্রোম এবং সদৃশগুলিকে উপেক্ষা করার জন্য তুলনা করুন () ব্যবহার করুন।


2
জাভা সর্বদা একটি গল্ফ প্রতিযোগিতায় উড়িয়ে দেবে।
রোডলফো ডায়াস

Files.readAllLines(Paths.get("w.txt"))আগে কখনও দেখিনি । এটি একটি দরকারী কৌশল।
Ypnypn

2

সিজেম, 68 বাইট

"www.ri.ms/§"gDc-N/{_,ea~~=\_W%=!*},:Q{_W%aQ\/,({Q\a-:Q;1}{;0}?},N*

আপনাকে এখান থেকে সংকলকের জাভা সংস্করণটি ডাউনলোড করতে হবে এবং ওয়ার্ডস সিজাম (কোনও নাম হতে পারে) নামক একটি ফাইলে উপরের কোডটি সংরক্ষণ করতে হবে। তারপরে কোডটি চালান

java -jar cjam-0.6.2.jar <file_name> <input_number> [> <output_file_name>]

উদাহরণস্বরূপ N = 8,

java -jar cjam-0.6.2.jar words.cjam 8 > out.txt  

জাভা – এটি সংক্ষিপ্ত রূপ নয়। দয়া করে এটি JAVA বানান করবেন না।
FUZxxl

@FUZxxl এটি অনেকটা স্ব-সম্পাদনাযোগ্য ..
অপ্টিমাইজার

আমি পুলিশ অফিসার নই। মানুষের বানান সম্পর্কে বিভিন্ন মতামত রয়েছে এবং আমি আপনার মতামতকে সম্মান করি। আমি কেবল আপনাকে জাভা বানান না করার পরামর্শ দিচ্ছি যেন এটি একটি সংক্ষিপ্ত রূপ, আমি আপনাকে আলাদা কোনও বানান জোর করতে চাই না।
FUZxxl

@FUZxxl আমি সত্যই মাঝের না: ডি
অপ্টিমাইজার

2

নোড.জেএস, 172 বাইট

ফাংশন:

function d(n){return(require('fs').readFileSync("w.txt")+"").match(RegExp(("b"+Array(n+1).join("(.)")+"b(?=(.|s)*b"+"87654321".substr(-n)+"b)").replace(/\w/g,"\\$&"),"g"))}

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

console.log(d(+process.argv[2]));
// run from command line like this:
// node main 4
// where
//   main is js file name
//   4    is length

2

কে, 59 বাইট

{*+?{x@<x}'+(w;r)@\:&(x=#:'w)&(~w~'r)&w in r:|:'w:0:`w.txt}

অনেকটাই অকপট. তালিকাটি পড়ুন, বিপরীত তালিকাটি তৈরি করুন, তাদের ছেদটি নিয়ে যান, প্যালিনড্রোমগুলি ফিল্টার করুন, প্রয়োজনীয় গণিতে ফিল্টার করুন, জোড়গুলি বাছাই করুন এবং ছাড়ুন।


2

রুবি, 95 বাইট

f=->n{l=[]
(a=IO.read"w.txt").split.map{|w|a[w]=?.
w.size==n&&a[/^#{r=w.reverse}\s$/]&&l<<w}
l}

ব্যাখ্যা

  • ইনপুট একটি ল্যাম্বডায় যুক্তি হিসাবে নেওয়া হয়। এটি একটি আশা করে Integer
  • String( a) হিসাবে মেমোরিতে ফাইলটি পড়ুন ।
  • লুপ ট্রাট Arrayসমস্ত শব্দের একটি (নিউলাইন ছাড়া)।
    • শব্দটি সরিয়ে দিন a
    • এর মধ্যে যোগ্যতার শব্দ যুক্ত করুন Array l
  • রিটার্ন l

Arrayকোনও যোগ্যতার শব্দ পাওয়া না গেলে একটি খালি ফিরিয়ে দেওয়া হয়।


1

নোড.জেএস, কফিস্ক্রিপ্ট, 132 বাইট

f=(n)->(require('fs').readFileSync('w.txt')+'').split('\n').filter((s,i,f)->s.length==n&&f.indexOf(s.split('').reverse().join(''))>i)

নোড.জেএস, 162 বাইট

function a(n){return(require('fs').readFileSync('w.txt')+'').split('\n').filter(function(s,i,f){return s.length==n&&f.indexOf(s.split('').reverse().join(''))>i})}

ক্রোম দেব সরঞ্জামগুলি কনসোল, 111 বাইট (ডাউনলোড পৃষ্ঠায়)

f=(n=>$('pre').innerText.split('\n').filter((x,i,a)=>x.length==n&&a.indexOf(x.split('').reverse().join(''))>i))

সমস্ত সংস্করণ সমস্ত Semordnilaps দৈর্ঘ্যের একটি অ্যারে প্রদান করে n

নোড.জেএস, 162 বাইট

সমস্ত semordnilaps মুদ্রণ:

function a(n){(require('fs').readFileSync('w.txt')+'').split('\n').map(function(s,i,f){s.length==n&&f.indexOf(s.split('').reverse().join(''))>i&&console.log(s)})}

1

জুলিয়া, 101 বাইট

k=split(readall("w.txt"))
for(i=k)
([]!=(l=find(x->x==reverse(i)&&x!=i,k)))&&(println(i);k[l]="")
end

এটি আসলে কাজ করা উচিত ...


1

গণিত, 105 বাইট

F[f_,n_]:=(W=StringSplit@Import@f;Select[W,StringLength@#==n&&MemberQ[W,r@#]&&Order[r@#,#]==1&&r@#!=# &])

কখনও কখনও আমদানি পাঠ্যগুলি স্বয়ংক্রিয়ভাবে রেখার তালিকার তালিকায় বিভক্ত হয়ে যায় বা এটিকে CSV বা TSV হিসাবে বিবেচনা করে। অন্যান্য সময়ে, আমদানি ফাইলের সামগ্রীগুলি স্ট্রিংয়ে পড়বে। আমদানি পরীক্ষার ডেটার জন্য উত্তরোত্তর করেছে।

পরীক্ষা


0

BASH

f() {
  w=($(cat "${1}"))
  for ((i=0;i<=${#w[@]};i++)); do
    if ((${#w[$i]} == $2)); then
      r=
      for((x=${#w[$i]}-1;x>=0;x--)); do
        r="$r${w[$i]:$x:1}";
      done
      if [[ ${w[$i]} != ${r} ]] && grep -qw $r "${1}"; then
        echo "${w[$i]}, ${r}"
      fi
      unset w[$i]
    fi
  done
}

পরীক্ষা ...

f /usr/share/dict/words 5

debut, tubed
decaf, faced
decal, laced
deeps, speed
denim, mined
devil, lived
draws, sward
faced, decaf
keels, sleek
knits, stink
laced, decal
lager, regal
leper, repel
lever, revel
lived, devil
loops, spool
loots, stool
mined, denim
parts, strap
peels, sleep
pools, sloop
ports, strop
rebut, tuber
regal, lager
remit, timer
repel, leper
revel, lever
sleek, keels
sleep, peels
sloop, pools
smart, trams
snaps, spans
snips, spins
spans, snaps
speed, deeps
spins, snips
spool, loops
spots, stops
sprat, tarps
stink, knits
stool, loots
stops, spots
strap, parts
straw, warts
strop, ports
sward, draws
tarps, sprat
timer, remit
trams, smart

2
আমার ধারণা এই খুব গল্ফ হয় না ..? স্ট্যাক ওভারফ্লোতে এটির একটি সুন্দর উত্তর হবে (যদি এটিতে কিছু মন্তব্য এবং ব্যাখ্যা থাকে)।
স্টিভি গ্রিফিন

1
সম্মত, এটি ব্যাশ-এ সমাধান করার ক্ষেত্রে এটি আমার প্রথম পুনরাবৃত্তি। এটিকে যতটা সম্ভব পঠনযোগ্য করে তুলতে আমি ক্লান্ত হয়ে পড়েছি। কিন্তু যতদূর গল্ফ যায় এটি আরও বেশি ভালো লেগেছে যে আমি একটি পার্ট 3 এ 9 গুলি করেছি: -)
ব্রায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.