ঘোরাফেরা শব্দগুলি অনুসন্ধান করুন!


41

কীভাবে বা কেন আমাকে জিজ্ঞাসা করবেন না তবে কোনও প্রকল্পের কোডিংয়ের সময় আমি লক্ষ্য করেছি যে কয়েকটি শব্দের অক্ষর বর্ণমালার সাথে একটি নির্দিষ্ট প্যাটার্ন উল্লেখ করেছে, আমি শব্দের প্রতিটি চরিত্রকে বর্ণমালায় পেন্সিলের সাথে সংযুক্ত করেছি এবং আমি দুটি পেয়েছি সর্পিলগুলি, তারপরে আমি লক্ষ্য করেছি যে প্রথম সর্পিলটি ঘড়ির কাঁটার দিকে এবং অন্যটি ছিল ঘড়ির কাঁটার বিপরীতে, এবং অন্যান্য বৈশিষ্ট্যগুলি ... তাই আমি তাদের নাম রাখলাম শব্দগুলি ঘূর্ণায়মান !

একটি ঘূর্ণায়মান শব্দ হতে পারে:

  1. ঘড়ির কাঁটার দিকে বা ঘড়ির কাঁটার বিপরীতে
  2. সেন্ট্রিপেটাল বা সেন্ট্রিফুগাল

এখানে ঘূর্ণায়মান শব্দের কয়েকটি উদাহরণ রয়েছে :

ঘোরাফেরা শব্দ ডায়াগ্রাম

কার্যক্রম 1:

একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখুন যা স্ট্যান্ডার্ড ইনপুট থেকে কোনও শব্দ নেবে এবং আবর্তিত শব্দ হলে আউটপুট আসবে এবং এর বৈশিষ্ট্যগুলি, পঠনযোগ্য ফর্ম্যাট, প্রসারিত পাঠ্য, 3 টি অক্ষর, পতাকা ইত্যাদি in

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

EARTH, GROUP            > NO        // NOT A SWIRLING WORD
OPERA, STAY, IRIS       > SW,CF,CW  // SWIRLING WORD, CENTRIFUGAL, CLOCKWISE
MINER, TAX, PLUG, META  > SW,CF,CC  // SWIRLING WORD, CENTRIFUGAL, COUNTERCLOCKWISE
AXIOM, AXIS, COOK       > SW,CP,CW  // SWIRLING WORD, CENTRIPETAL, CLOCKWISE
WATCH, YETI, PILL       > SW,CP,CC  // SWIRLING WORD, CENTRIPETAL, COUNTERCLOCKWISE

MORE EXAMPLES OF FALSE TEST CASES (NOT SWIRLING WORDS): 
EARTH, GROUP, OUTPUT, WORD, CONNECTION, ODD, MOM, DAD, 
CHARACTER, EXAMPLE, QUESTION, NEWSLETTER, OTHER

নিয়মাবলী:

  1. প্রথম দুটি অক্ষরের মধ্যে সংযোগ অবশ্যই উপরে থাকতে হবে (গ্রাফিক্সের মতো), সমস্ত সমযোগ সংযোগ অবশ্যই ডাউন হতে হবে , সমস্ত বিজোড় সংযোগ অবশ্যই আপ
  2. আপনি উপরের / ছোট হাতের বিষয়টি উপেক্ষা করতে পারেন বা সমস্তকে আপার কেস বা সমস্তকে ছোট ক্ষেত্রে রূপান্তর করতে পারেন।
  3. ইনপুট শব্দগুলি কেবলমাত্র জেড এর বর্ণমালা সীমার অক্ষর, কোনও স্থান নেই, কোনও বিরামচিহ্ন ইত্যাদি নেই are
  4. যদি একটি শব্দের "GROOVE" এর মতো ডাবল অক্ষর থাকে তবে আপনাকে অবশ্যই দ্বিগুণকে একটি অক্ষরে ভেঙে ফেলতে হবে: "GROOVE"> "GROVE"।
  5. ইনপুট শব্দগুলিতে কমপক্ষে 3 টি স্বতন্ত্র অক্ষর থাকবে। "এমওএম", "ড্যাড", "এলএল" এর মতো শব্দগুলি বৈধ শব্দ নয়।
  6. "আইআরআইএস" এর মতো একই চরিত্রে একাধিকবার পাস করা সম্ভব।
  7. সংক্ষিপ্ততম কোড জিতেছে।

কার্য 2:

আরও খ্যাতি অর্জনের জন্য, দীর্ঘতম ঘূর্ণায়মান শব্দের সন্ধান করুন এবং এর বৈশিষ্ট্যগুলি, যা আপনি উপরোক্ত নিয়মগুলি অনুসরণ করে ইংরেজি অভিধানে খুঁজে পেতে পারেন। উদাহরণস্বরূপ আপনি এখানে ইংরেজি শব্দের সম্পূর্ণ তালিকাটি রেফারেন্স হিসাবে নিতে পারেন ।

শুভ কোডিং!


15
চমৎকার চিত্র! :) (এবং দুর্দান্ত চ্যালেঞ্জটিও।;))
মার্টিন এন্ডার

"ঘূর্ণি" বাদ দেওয়া কি বৈধ আউটপুট ফর্ম্যাট হতে পারে, যেহেতু ইনপুটটি "ঘূর্ণায়মান নয়" যখন তা বোঝানো হয়?
মার্টিন ইন্ডার

@ মার্টিন ইন্দ্রা হ্যাঁ, যেহেতু এটি ঘূর্ণায়মান হয় বা না হয় তখন এটি বোঝা যায় "হ্যাঁ" ইত্যাদির জন্য "না" এবং "1" এর জন্য খালি থাকতে পারে (খুশী আপনি চিত্রগুলি এবং চ্যালেঞ্জ পছন্দ করেছেন! :))
মারিও

1
@ টিমিডি তবে সমস্ত কড়া শব্দ ঘুরছে না। :)
মার্টিন ইন্ডার

2
@ লিন প্রশংসা এবং পরামর্শের জন্য ধন্যবাদ, আমি ভবিষ্যতের জন্য উন্নতি করার চেষ্টা করব আমাকে "ডাবল অপসারণ" বিধি যুক্ত করে লোকেরা আমাকে জিজ্ঞাসা করার মতো জিনিস জিজ্ঞাসা করতে "ডাবল থাকে তখন আমরা কী করব?" > আপনি ডাবলগুলিকে ১ টি একক চরিত্র হিসাবে বিবেচনা করতে পারেন কারণ "এল" থেকে "এল" এ যাওয়ার শূন্য দূরত্বটি :) এটি নয় যে আমি নিজের স্বার্থের জন্য আমি জটিল সমস্যাগুলি যুক্ত করতে চেয়েছিলাম।
মারিও

উত্তর:


11

এমএটিএল , 33 31 30 বাইট

lydhg)dt|dZSXz&=wZSdh?4M1)3M1)

ইনপুট বড় হাতের অক্ষরে থাকে (বা ছোট হাতের অক্ষরে থাকে তবে মিশ্র হয় না)।

আউটপুট হল:

  • শব্দটি যদি অ-ঘূর্ণায়মান হয়: কোনও আউটপুট তৈরি হয় না
  • যদি এটি ঘূর্ণায়মান হয়: দুটি সংখ্যা বিভিন্ন লাইনে উত্পাদিত হয়:
    • প্রথম সংখ্যা 1/ -1 কেন্দ্রকেন্দ্রিক / সেন্ট্রিপেটাল নির্দেশ করে।
    • দ্বিতীয় সংখ্যা 1/। -1 'ঘড়ির কাঁটা / ঘড়ির কাঁটার দিকে নির্দেশ করে।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন (কোডটি সমস্ত ইনপুট নিতে এবং একই লাইনে দুটি আউটপুট নম্বর উত্পাদন করতে সংশোধিত)

ব্যাখ্যা

'OPERAA'একটি উদাহরণ হিসাবে ইনপুট গ্রহণ করা যাক ।

কোডের প্রথম অংশটি ডাবল বর্ণগুলি সরিয়ে দেয়:

l     % Push 1
      %   STACK: 1
y     % Take input implicitly from below, and duplicate
      %   STACK: 'OPERAA', 1, 'OPERAA'
d     % Convert to code points and compute differences
      %   STACK: 'OPERAA', 1, [1 -11  13 -17 0]
h     % Concatenate horizontally
      %   STACK: 'OPERAA', [1 1 -11  13 -17 0]
g     % Convert to logical
      %   STACK: 'OPERAA', [true true true true true false]
)     % Index
      %   STACK: 'OPERA'

আমরা এখন পরীক্ষা করে দেখি যে চিঠিগুলির মধ্যে দূরত্বগুলি হ্রাস পাচ্ছে না (শব্দের ঘূর্ণায়মান হওয়ার জন্য প্রয়োজনীয় শর্ত):

d     % Convert to code points and compute differences
      %   STACK: [1 -11  13 -17]
t|    % Duplicate and take absolute value
      %   STACK: [1 -11  13 -17], [1 11  13 17]
d     % Differences
      %   STACK: [1 -11  13 -17], [10 2 4]
ZS    % Signum
      %   STACK: [1 -11  13 -17], [1 1 1]
Xz    % Remove zeros (gives a vertical vector). Needed for words like 'IRIS',
      % where some consecutive distances are equal
      %   STACK: [1 -11  13 -17], [1; 1; 1]
&=    % All pairwise equality comparisons. Gives a matrix. If all the signs 
      % were equal the matrix will contain all ones
      %   STACK: [1 -11  13 -17], [1 1 1; 1 1 1; 1 1 1]

তারপরে আমরা অক্ষরগুলি পিছনে পিছনে যায় কিনা তা পরীক্ষা করে দেখি (শব্দটি ঘূর্ণায়মানের জন্য এটি অন্যান্য শর্ত):

w     % Swap
      %   STACK: [1 1 1; 1 1 1; 1 1 1], [1 -11  13 -17]
ZS    % Signum
      %   STACK: [1 1 1; 1 1 1; 1 1 1], [1 -1 1 -1]
d     % Differences
      %   STACK: [1 1 1; 1 1 1; 1 1 1], [-2 2 -2]

শেষ অবধি, আমরা দুটি শর্ত ধরে কিনা তা পরীক্ষা করে দেখি এবং সে ক্ষেত্রে আউটপুট উত্পাদন করে:

h     % Concatenate horizontally
      %   STACK: [1 1 1 1 1 1 1 1 1 -2 2 -2]
?     % If all elements are nonzero
  4M  %   Push first signum array without zeros, from the automatic clipboard
      %     STACK: [1; 1; 1]
  1)  %   Get first element (tells if first difference was positive or negative)
      %     STACK: 1
  3M  %   Push second signum array, from the automatic clipboard
      %     STACK: 1, [1 -1 1 -1]
  1)  %   Get first element (tells if first movement was right or left)
      %     STACK: 1, 1
      %   Implicitly end if
      % Implicitly display

6

গণিত, 117 111 বাইট

জেএইচএমকে 6 বাইট সংরক্ষণ করার জন্য এবং এটি বুটের ক্ষেত্রে সংবেদন-সংবেদনশীল করার জন্য ধন্যবাদ!

 {o=OrderedQ/@{a=Abs[d=Differences[#&@@@Split@LetterNumber@#]],Reverse@a},d[[1]]>0,Or@@o&&Max[Most[d]Rest@d]<0}&

নামহীন ফাংশন যা একটি স্ট্রিং নেয় এবং ফর্মের বুলেঁদের তালিকাবদ্ধ তালিকাটি দেয় {{B1,B2},B3,B4}। শব্দটি ঘোরাফেরা করছে কিনা তা বি 4 রেকর্ড করে (এবং যদি তা না হয় তবে আউটপুটটির বাকী অংশ আবর্জনা হয়)। শব্দটি যদি ঘুরে বেড়াচ্ছে, তবে বি 1 শব্দটি কেন্দ্রকেন্দ্রিক কিনা তা রেকর্ড করে, বি 2 শব্দটি কেন্দ্রীভূমিক কিনা তা রেকর্ড করে এবং বি 3 শব্দটি ঘড়ির কাঁটার (সত্য) বা ঘড়ির কাঁটার বিপরীতে (মিথ্যা) কিনা তা রেকর্ড করে।

এখানে একটি লম্বা সংস্করণ যা পোস্ট প্রসেস (প্রথম লাইন) উপরের ফাংশন (2nd-5th লাইন ধরে ব্যবধানে) এটি ওপি অভিন্ন করতে দেওয়া হল: NOযদি শব্দ ঘুরপাক খাচ্ছে হয় না এবং যথাযথ পছন্দ {SW,CF,CW}, {SW,CF,CC}, {SW,CP,CW}, অথবা {SW,CP,CC}যদি শব্দটি ঘুরছে:

If[#3, {SW, If[#[[1]], CF, CP], If[#2, CW, CC]}, NO] & @@
  {o = OrderedQ /@
    {a = Abs[d = Differences[# & @@@ Split@LetterNumber@#]], Reverse@a},
  d[[1]] > 0,
  Or @@ o && Max[Most[d] Rest@d] < 0} &

ব্যাখ্যাটি একই রকম একটি অতিরিক্ত নোট সহ মার্টিন ইন্ডারের সিজেএম উত্তরের মতোই: শব্দটি ঘুরাঘুরির জন্য ক্রমাগত পার্থক্যের তালিকার অবশ্যই বিকল্প হতে হবে, এবং এটি নিশ্চিত করে সনাক্ত করা যেতে পারে যে যুগল পার্থক্যগুলির সমস্ত পণ্যই নেতিবাচক রয়েছে are (এটি কি Max[Most[d]Rest@d]<0করে)

গাণিতিকের সমস্ত 40,000+ শব্দের উপরে ফাংশনটি চালাচ্ছি WordList[], আমরা নিম্নলিখিত 8-বর্ণের ঘূর্ণায়মান শব্দগুলি পাই যা এগুলি স্ব স্ব ঘূর্ণায়মান প্রকারের মধ্যে দীর্ঘতম:

operetta    {SW, CF, CW}
opposite    {SW, CF, CW}
stowaway    {SW, CF, CW}
assassin    {SW, CP, CW}
assessor    {SW, CP, CW}
baccarat    {SW, CF, CC}
keenness    {SW, CF, CC}
positive    {SW, CF, CC}

(ব্রোনি positiveকোনও ডাবল অক্ষর না থাকার কারণে এবং তার চেয়ে কম পুনরাবৃত্ত চিঠিগুলি নির্দেশ করে points stowaway)

তবে পরম চ্যাম্পিয়ন হ'ল 9-অক্ষরের পাল্টা দিকের-ঘূর্ণায়মান সেন্ট্রিপেটাল শব্দ vassalage!


1
আপনি ব্যবহার করে 3 বাইট সংরক্ষণ করতে পারবেন LetterNumberপরিবর্তে ToCharacterCodeব্যবহার করার মাধ্যমে এবং অন্য 3 বাইট Most[d]পরিবর্তে Drop[d,-1]
জংহওয়ান মিন

5

স্কালা, 110 বাইট

def/(s:String)={val ? =s.sliding(2).map(t=>(t(0)-t(1)).abs).toSeq
(Seq(?,?reverse)indexOf(?sorted),s(0)<s(1))}

এর (a,b)সাথে একটি টিপল ফেরত দেয়

  • a == 1 যদি গুলি কেন্দ্রিক হয়
  • a == 0 যদি s কেন্দ্রীভূত হয়
  • a == -1 যদি s ঘুরছে না

এবং

  • b == true যদি এস ঘড়ির কাঁটার দিকে
  • b == false যদি গুলি বিপরীত দিকে থাকে
  • বি টি ঘুরছে না সত্য বা মিথ্যা হতে পারে

ব্যাখ্যা:

def/(s:String)={      //define a method called / with a String argument
  val ? =s            //define ? as...
    .sliding(2)       //an iterator for each two consecutive elements
    .map(t=>          //foreach 2 chars
      (t(0)-t(1)).abs //get the absolute value of their difference
    ) 
    .toSeq            //and convert the iterator to a Seq, because iterator doesn't have reverse and sorted methods
  (                   //return a tuple of
    Seq(?,?reverse)     //a Seq of ? and reversed ?
    .indexOf(?sorted)   //and check which of them is sorted ?
  ,                   //and
   s(0)< s(1)          //the difference bewteen the first two elements of the string.
  )
}

5

জেলি , 30 বাইট

3Ŀḟ0ṠE
ÑṠḟ0Ṃ
ÑAI
OIḟ0
ÇṠḢ;2Ŀ;Ñ

ট্রাইটাইনলাইন
অথবা পরীক্ষার কেসগুলি দেখুন (সামান্য পরিবর্তন হিসাবে খুব শেষেরÑসাথে নতুন মূল লিঙ্কে নির্দেশ করা হবে)

(আমার চেইন দক্ষতার অভাব সম্ভবত এখানে কয়েকটি বাইট ব্যয় করতে হবে)
সমস্ত উচ্চ বা নিম্নতর।
একটি পতাকা তালিকা ফেরত দেয় [ডি, এফ, এস]:
এস: স্পিনিং = 1 / স্পিনিং = 0
এফ: সেন্ট্রিফিউগাল = 1 (বিজ্ঞপ্তি = 0) সেন্ট্রিপেটাল = -1
ডি: ক্লকওয়াইজ = 1 / অ্যান্টলিকওয়্যার = -1
- যদি এস = 0 অন্যান্য পতাকাগুলি কার্যকর তথ্য না নিলেও এখনও মূল্যায়ন করা হয়।

কিভাবে?

3Ŀḟ0ṠE      - Link 1, isSpinning: s
3Ŀ          - call link 3 as a monad with s
  ḟ0        - filter out zeros
    Ṡ       - sign
     E      - all equal?

ÑṠḟ0Ṃ       - Link 2, centrifugal(-1), circular(0) or centripetal(1): s
Ñ           - call next link (3) as a monad with s
 Ṡ          - sign (+1 for positive changes, -1 for negative changes, 0 for no change)
  ḟ0        - filter out zeros (ignore these for cases like "IRIS")
    Ṃ       - minimum (will be the only value for spinning words)
            -    (circular words like "DAD", now excluded, yield min([])=0)

ÑAI         - Link 3, absolute change of moves over alphabet: s
Ñ           - call next link (4) as a monad with s
 A          - absolute
  I         - differences

OIḟ0        - Link 4, non-zero moves over alphabet: s
O           - ordinal cast
 I          - differences
  ḟ0        - filter out zeros

ÇṠḢ;2Ŀ;Ñ    - Main link: s
Ç           - call last link (4) as a monad with s
 Ṡ          - sign
  Ḣ         - head (clockwise / anticlockwise: 1 / -1)
   ;  ;     - concatenate
    2Ŀ      - call link (2) as a monad with s
       Ñ    - call next link (1) as a monad with s

1
আমি মনে করি আপনি এখানে "নবাগত সিন্ড্রোম" যাকে ডাকছেন তা আপনি অনুভব করছেন। আমিও ঠিক তোমার মতোই অনুভব করছি। ডেনিস এখানে কিছুটা সাহায্য করতে পারে। তবে, আমি +1 করেছি, কারণ আমি দেখেছি এটি জেলিতে সম্ভব possible এছাড়াও, আপনি বিজ্ঞপ্তি ক্ষেত্রে অপসারণ করতে পারেন; এটি আর নেই।
এরিক আউটগল্ফার

বিজ্ঞপ্তিযুক্ত শব্দের বিষয়ে কৌতুকের জন্য ধন্যবাদ - যেহেতু এটির জন্য 6 বাইটগুলি দেখা যাচ্ছে এটি অপ্রয়োজনীয় ছিল যেহেতু খালি তালিকার সর্বনিম্ন ন্যূনতম 0তাই এটি এখনও তাদের পক্ষে কাজ করে!
জোনাথন অ্যালান

সুতরাং, এটি তাদের জন্য কাজ করা আবশ্যক ? আমি দেখতে পাচ্ছি যে circular(0)আপনার ব্যাখ্যাটির ভিতরে এখনও রয়েছে , সম্ভবত এটি এটি সরিয়ে নেওয়ারও সময় এসেছে।
এরিক দ্য আউটগল্ফার

এটি প্রয়োজন হয় না, না - তবে min([])=0 জেলি.ট্রিটোনলাইন.এন.সি. / কোডকোডডব্লিউ 13 হুআইআই এবং ইনপুট= - এই কারণে যে কোডটি বিজ্ঞপ্তিযুক্ত শব্দগুলি এখন আর হয় না , তার কারণে এই কোডটি এখনও স্পষ্ট করে এটি করার জন্য যা আমি ব্যবহার করেছি তা অপসারণের পরেও তা করে does প্রত্যাশিত ইনপুট, তাদের খাওয়ার ক্ষেত্রে কোনও সমস্যা নেই।
জোনাথন অ্যালান

আমি আপনাকে কেবল ডাবল-চেক করতে বলেছি। এবং, আমি বুঝতে পেরেছিলাম যে আপনি বোঝাতে চেয়েছিলেন min([])==0তবে আমি ভেবেছিলাম এটি এখনও গল্ফযোগ্য।
এরিক দি আউটগল্ফার

3

সিজেম , 39 বাইট

r{2ew::-V}:D~-_:g_0=\D#)!@:zD-:g_0=\(-!

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

ইনপুট বড় হাতের বা ছোট হাতের অক্ষর হতে পারে, তবে মিশ্রিত নয়।

প্রোগ্রামটি অসাবধানতার সাথে এমন শব্দগুলি নির্দেশ করে যা প্রয়োজনীয় কেন্দ্রীভূত বা কেন্দ্রিক নয়, তবে অন্যথায় সর্পিল হওয়ার প্রয়োজনীয়তাগুলি পূরণ করে। এগুলি নীচের চার্টে "বিজ্ঞপ্তি" হিসাবে বর্ণনা করা হয়েছে।

আউটপুট ব্যাখ্যা করতে এই চার্টটি ব্যবহার করুন:

SPIRAL (output contains four 1s)
-11-11 : Clockwise Centrifugal
-1111  : Clockwise Centripetal
11-11  : Counter-clockwise Centrifugal
1111   : Counter-clockwise Centripetal

CIRCULAR (output contains two 1s)
-11    : Clockwise Circular
11     : Counter-clockwise Circular

NONSPIRAL (output contains a 0)


ব্যাখ্যা:

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

r{2ew::-V}:D~-   e# take difference of overlapping pairs, removing 0s handles duplicates
               ede# store difference function plus 0 as D, it's multipurpose
_:g_0=\          e# compute signs differences, keep first to show starting direction
               ede# -1 = CLOCKWISE, 1 = COUNTERCLOCKWISE
D#)!@            e# difference of signs includes 0 if not alternating, keep in stack
               ede# 1 = ALTERNATING, 0 = NOT ALTERNATING
:zD-:g           e# signs of difference of absolute values, ignoring 0s (fixed magnitude)
_0=\             e# keep first sign in stack to indicate how the sequence starts
               ede# -1 = INCREASING, 1 = DECREASING
(-!              e# remove first item from entire list and see if nothing remains
               ede# 1 = EMPTY(MONOTONE), 0 = NONEMPTY

3

পিএইচপি, 322 বাইট

for(;++$i<strlen($z=preg_replace("#(.)\\1#","$1",$argv[1]));){$t[]=$z[$i-1]<=>$z[$i]?:0;$o[]=$z[0]<=>$z[$i];$i<2?:$k[]=$z[$i-2]<=>$z[$i];}$s=preg_match("#^1?(-11)*(-1)?$#",join($t))?($t[0]!=1?1:2):0;$s+=2*preg_match($r="#^(-1|0)?([01](-1|0))*[01]?$#",join($o));$s*=preg_match($r,join($k));count_chars($z,3)[2]?:$s=0;echo$s;

আরও সুন্দর আউটপুট জন্য echo["n","+P","-P","+F","-F"][$s];

প্রসারিত সংস্করণ

for(;++$i<strlen($z=preg_replace("#(.)\\1#","$1",$argv[1]));){
    $t[]=$z[$i-1]<=>$z[$i]?:0;
    $o[]=$z[0]<=>$z[$i];
    $i<2?:$k[]=$z[$i-2]<=>$z[$i];
    }
$s=preg_match("#^1?(-11)*(-1)?$#",join($t))?($t[0]!=1?1:2):0; #Clockwise direction or not
$s+=2*preg_match($r="#^(-1|0)?([01](-1|0))*[01]?$#",join($o)); # True centrifugal
$s*=preg_match($r,join($k)); #true or false second test for not
count_chars($z,3)[2]?:$s=0; # word must have >2 different characters
echo$s;# short output
echo["n","+P","-P","+F","-F"][$s]; #long output alternative

শর্ট ডাবলস বিধি ছাড়াই টাস্ক 2 সেকেন্ডের মান

4 -F হত্যার 11 বাইট 10 বাইট সারণী করে

3 + এফ বিরোধী 10 বাইট লোগোগ 9 বাইট

2-পি ভ্যাসালেজ 9 বাইটস সারকোকল, সশাররা 8 বাইট

1 + পি মূল্যায়ন 9 বাইট অ্যাপাঞ্জ, আরামিক, আরগনন, নিলাম, বিমান, পুরষ্কার, ক্রেইনেল, বহির্গমন, বহির্গমন, প্রত্যক্ষদর্শী 7 বাইট

একটি শব্দ ভিজ্যুয়ালাইজ করুন

header('Content-Type: image/svg+xml; charset=UTF-8');
$w=$_GET["w"]??"OOPERRA";
$w=strtoupper($w);
echo '<?xml version="1.0" encoding="UTF-8"?>'
.'<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'

.'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 -100 420 400">'
.'<title>Swirl Word</title><desc>Viualize a Word</desc>';
echo '<text x="210" y="-50" text-anchor="middle" font-family="arial">'.$w.'</text>';

foreach(range("A","Z")as $x=>$c){
    echo '<text x="'.(15+$x*15).'" y="110" text-anchor="middle" font-family="arial">'.$c.'</text>';
    $r[$c]=15+$x*15;
}
for($i=0;++$i<strlen($w);){
    echo '<path d="M '.($r[$w[$i-1]]).',105 A '.($radius=abs($r[$w[$i]]-$r[$w[$i-1]])/2).' '.($radius).' 0 0 0 '.($r[$w[$i]]).',105" style="stroke:gold; stroke-width:1px;fill:none;" />';
}
echo '</svg>';  

স্নিপেটে আমার তৈরি এসভিজির ফলাফল

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 -100 420 400"><title>Swirl Word</title><desc>Viualize a Word</desc><text x="210" y="-50"  text-anchor="middle" font-family="arial">KILLINGNESS</text><text x="15" y="110" text-anchor="middle" font-family="arial">A</text><text x="30" y="110" text-anchor="middle" font-family="arial">B</text><text x="45" y="110" text-anchor="middle" font-family="arial">C</text><text x="60" y="110" text-anchor="middle" font-family="arial">D</text><text x="75" y="110" text-anchor="middle" font-family="arial">E</text><text x="90" y="110" text-anchor="middle" font-family="arial">F</text><text x="105" y="110" text-anchor="middle" font-family="arial">G</text><text x="120" y="110" text-anchor="middle" font-family="arial">H</text><text x="135" y="110" text-anchor="middle" font-family="arial">I</text><text x="150" y="110" text-anchor="middle" font-family="arial">J</text><text x="165" y="110" text-anchor="middle" font-family="arial">K</text><text x="180" y="110" text-anchor="middle" font-family="arial">L</text><text x="195" y="110" text-anchor="middle" font-family="arial">M</text><text x="210" y="110" text-anchor="middle" font-family="arial">N</text><text x="225" y="110" text-anchor="middle" font-family="arial">O</text><text x="240" y="110" text-anchor="middle" font-family="arial">P</text><text x="255" y="110" text-anchor="middle" font-family="arial">Q</text><text x="270" y="110" text-anchor="middle" font-family="arial">R</text><text x="285" y="110" text-anchor="middle" font-family="arial">S</text><text x="300" y="110" text-anchor="middle" font-family="arial">T</text><text x="315" y="110" text-anchor="middle" font-family="arial">U</text><text x="330" y="110" text-anchor="middle" font-family="arial">V</text><text x="345" y="110" text-anchor="middle" font-family="arial">W</text><text x="360" y="110" text-anchor="middle" font-family="arial">X</text><text x="375" y="110" text-anchor="middle" font-family="arial">Y</text><text x="390" y="110" text-anchor="middle" font-family="arial">Z</text><path d="M 165,105 A 15 15 0 0 0 135,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 135,105 A 22.5 22.5 0 0 0 180,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 180,105 A 0 0 0 0 0 180,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 180,105 A 22.5 22.5 0 0 0 135,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 135,105 A 37.5 37.5 0 0 0 210,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 210,105 A 52.5 52.5 0 0 0 105,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 105,105 A 52.5 52.5 0 0 0 210,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 210,105 A 67.5 67.5 0 0 0 75,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 75,105 A 105 105 0 0 0 285,105" style="stroke:gold; stroke-width:1px;fill:none;" /><path d="M 285,105 A 0 0 0 0 0 285,105" style="stroke:gold; stroke-width:1px;fill:none;" /></svg>


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

@ মারিওর '.(.8*$radius).'পরিবর্তে এটির পরিবর্তে কেবল একটি ফ্যাক্টর দরকার '.($radius).'এবং আপনি যদি প্রোগ্রামটির ($radius).' 0 0 0সাথে প্রতিস্থাপন করেন ($radius).' 0 0 '.(($w[$i-1]<$w[$i]?1:0)^(($i-1)%2)).'তবে কোনও স্থির দিকনির্দেশনা নেই
জার্গ হালসারম্যান

2

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

z f=tail>>=zipWith f
g c=and.z c.filter(/=0).map abs.z(-).map fromEnum
(a:b:r)%c|a==b=(b:r)%c|1<3=c a b
f s|a<-[g(>=)s,g(<=)s]=or a:a++[s%(<),s%(>)]

আইডিয়নে চেষ্টা করে দেখুন।

ইনপুট অবশ্যই একটি নিম্নতর বা সমস্ত আপার-কেস হতে হবে।
আউটপুট পাঁচটি Booleans একটি তালিকা রয়েছে: [SW?, CF?, CP?, CW?, CC?]

f "positive" -> [True,True,False,False,True]

এটি প্রত্যাশার চেয়ে দীর্ঘতর হয়ে উঠেছে, বিশেষত পুনরাবৃত্ত অক্ষরগুলির পচে যাওয়া প্রায় 40 বাইট লাগে।

প্রথম আমি শুধু প্রথম দুই উত্পাদ অক্ষর তুলনায় CWবা CCমত যে testcases ঠাহর আগে bbaবা bbcখুব বৈধ এবং এই পদ্ধতির পরাজিত।


2

পাইথন, 152 বাইট:

lambda C:[C[-1]in max(C)+min(C),C[1]>C[0]]*all([[i>g,i<g][[h%2>0,h%2<1][C[1]>C[0]]]for i,g,h in filter(lambda i:i[0]!=i[1],zip(C,C[1:],range(len(C))))])

একটি বেনামে ল্যাম্বদা ফাংশন। যেমন কল print(<Function Name>('<String>'))

সব ছোট হাতের বা বড় হাতের, কিন্তু ইনপুট লাগে না মিশ্র কেস।

[]শব্দটি সুইরিলি না হলে কিছু না ( ) সম্বলিত একটি অ্যারে বা অন্যথায় নিম্নলিখিত বিন্যাসে একটি অ্যারে আউটপুট দেয় :

  • 1 ম উপাদান True/Falseজন্য Centrifugal/Centripetal
  • 2 য় উপাদান True/Falseজন্য Clockwise/Counterclockwise

এটি অনলাইন চেষ্টা করুন! (Ideone)

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