সহজে টাইপযোগ্য শব্দ


30

এই প্রতিযোগিতা শেষ।

বিজয়ী হলেন 22 টি চরিত্রের সাথে সিজেএম , একটি চরিত্রের মাধ্যমে টু নাইটের উত্তরকে পরাজিত করে। অভিনন্দন ডেনিস !

একটি সম্মানজনক উল্লেখ ফালকোর কাছে যায় , যিনি নিখরচায় আমদানিতে সম্পূর্ণ উন্মাদ হয়ে গিয়েছিলেন।


কিছুক্ষণ আগে আমি জানতে চেয়েছিলাম যে আমি কীভাবে আমার নোকিয়া 3310 দিয়ে আধুনিক স্মার্টফোনগুলি আউট-টাইপ করতে পারি, এবং কিছু উত্তর সত্যই ভাল ছিল, আমি এখনও তা রাখতে পারি না! হতে পারে আমার অন্যরকম দৃষ্টিভঙ্গি নেওয়া উচিত এবং টাইপ করার জন্য বিশৃঙ্খলাযুক্ত কোনও শব্দই লিখতে হবে না।

যদি স্ট্যান্ডার্ড লেআউটটি দেওয়া হয়, টেলিফোনের কীবোর্ডে একটানা দুটি অক্ষর একই বোতামে না থাকে তবে আমরা সহজেই টেক্সটের টুকরোটিকে কল করব:

টেলিফোন কীবোর্ড


তোমার কাজ

আপনার কাজ হ'ল একটি প্রোগ্রাম / ফাংশন লিখুন যা sস্টিডিন থেকে / প্যারামিটার হিসাবে একটি স্ট্রিং গ্রহণ করে এবং যদি sসহজেই টাইপযোগ্য হয় এবং অন্যথায় মিথ্যা মান থাকে তবে সত্যবাদী মান প্রদান করে। ইনপুটটিতে কেবল ছোট হাতের অক্ষর এবং স্পেস থাকবে এবং খালি খালি থাকার গ্যারান্টিযুক্ত!

স্কোরিং

এটি কোডগল্ফ, তাই সর্বনিম্ন অক্ষর-গণনা জয়।

আমদানি বিবৃতি আপনার চূড়ান্ত স্কোর প্রতি গণনা করা হবে, তাই আপনি যদি কখনও ব্যবহার করতে চেয়েছিলেন করেছি std::set_symmetric_difference, liftM4অথবা itertools.combinationsআপনার কোডে, এখন সময়!

-3 যদি আপনার উত্স কোডটি সহজেই টাইপযোগ্য হয় তবে ধরে নেওয়া হয় যে চিঠিটি নয় এমন সমস্ত কিছুই বাটন 0 এ রয়েছে all সর্বোপরি, আমি আপনার কোডটি কিছু বন্ধুদের কাছে বার্তা দিতে চাই!

Testcases

আপনার কোডটি ইচ্ছাকৃতভাবে কাজ করছে কিনা তা পরীক্ষা করার জন্য এখানে কয়েকটি পরীক্ষামূলক কেস দেওয়া আছে:

"x" -> True
"aardvark" -> False
"ardvark" -> True
"flonk" -> False

"im codegolfing all day long" -> False
"i indulge in minimizing bytecount" -> True

"havent heard from you in a long time" -> False
"your silence was of undue permanence" -> True

"how are  you" -> False
"how are you" -> True

শুভ গল্ফিং!


টানা দুটো জায়গা কি খারাপ?
মার্টিন এন্ডার

@ মার্টিনব্যাটনার হ্যাঁ! সম্ভবত এটির জন্য একটি টেস্টকেস যুক্ত করা উচিত।
ফ্লোন্ক

9
আমার কাছে নোকিয়া ডামফোন আছে, আমি যদি দুবার স্পেস টিপ করি তবে আমি একটি নম্বর পাই get
ওভারটেক্টর

1
সম্পর্কিত প্রশ্ন: একটি ফোন কীবোর্ড লেআউট তৈরি করুন যা প্রায়শই ঘন ঘন শব্দগুলি কীভাবে সহজে টাইপযোগ্য তার উপর ভিত্তি করে কিছু স্কোর সর্বাধিক করে তোলে।
justinpc

1
@jpcooper এখানে দুটি উল্লেখ করা মত ? আমি 8 স্পেন ব্যবহার করেছি এবং সত্যিই এটি পছন্দ করি, কেবল আমার ফোনের গ্লাসটি এটি ব্যবহার করে গরম করে দেয় (যোগাযোগ থেকে, সিপিইউ ক্রিয়াকলাপ থেকে নয়) এবং ঘর্ষণ সহগ দীর্ঘ ইনপুটগুলির জন্য এটি ব্যবহার করা শক্ত করে তোলে। নোট 3 এ এস-পেন ব্যবহার করা এত সহজ :)
এবেন

উত্তর:


6

সিজেম, 34 31 27 22 টি অক্ষর

1l{'h-_9/-D+3/X\:X^*}/

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

উদাহরণ রান

$ cjam <(echo "1l{'h-_9/-D+3/X\:X^*}/") <<< 'aardvark'; echo
0
$ cjam <(echo "1l{'h-_9/-D+3/X\:X^*}/") <<< 'ardvark'; echo
66000

কিভাবে এটা কাজ করে

1l                         " Push a R := 1 and read a line L from STDIN.                  ";
                           " Initialize X := 1. (implicit)                                ";
  {                  }/    " For each character C of L, do the following:                 ";
    'h-                    "     C -= 'h'                                                 ";
       _9/-D+3/            "     Y := (C - C / 9 + 13) / 3                                ";
               X\  ^*      "     R *= X ^ Y                                               ";
                 :X        "     X := Y                                                   ";
                           " Print R. (implicit)                                          ";

পটভূমি

কোডটির মূলটি ইনপুট স্ট্রিংয়ের প্রতিটি অক্ষর সিতে একটি মানচিত্র এফ প্রয়োগ করে যাতে একই মূল মিলের চিহ্নগুলির চিত্রগুলি থাকে। নিম্নলিখিতগুলি পর্যবেক্ষণ করে আমি একটি উপযুক্ত মানচিত্রটি পেয়েছি:

T: C ↦ (C - 'h') + 13 মানচিত্রটি স্ট্রিং S কে রূপান্তর করে : = "abcdefghijklmnopqrstuvxyz" নিম্নরূপ:

[-59   6  7  8   9 10 11  12 13 14  15 16 17  18 19 20  21 22 23 24  25 26 27  28 29 30 31]

কী জন্য 0করতে 6, এটি বিভক্ত করতে যথেষ্ট হবে টি (গ) দ্বারা 3 , কিন্তু আমরা এ অক্ষর সংশোধন কিছু বাছাই আবেদন করতে হবে গুলি , T , বনাম , Y এবং z- র

D: C ↦ (C - 'h') / 9 মানচিত্রটি স্ট্রিং এসকে নিম্নলিখিত অ্যারে রূপান্তরিত করে :

[ -8   0  0  0   0  0  0   0  0  0   0  0  0   0  0  0   0  1  1  1   1  1  1   1  1  1  2]

এটি অন্যকে প্রভাবিত না করে s , t , v , y এবং z এর ভাগফলকে সংশোধন করে ।

পরিশেষে, মানচিত্র F: C ↦ (T (C) - D (C)) / 3 স্ট্রিং এসকে নীচে রূপান্তরিত করে:

[-17   2  2  2   3  3  3   4  4  4   5  5  5   6  6  6   7  7  7  7   8  8  8   9  9  9  9]

যা কিছু স্থির থাকে তা হ'ল একের পর এক চরিত্রের তুলনা করা। সে লক্ষ্যে আমরা পূর্বের চরিত্রের চিত্র সহ XOR এফ (সি) - প্রথমটির জন্য, আমরা 1 (ভেরিয়েবল এক্সের ডিফল্ট মান ) দিয়ে XOR এফ (সি ), যার কোনও প্রিমাইজ নেই - এবং সমস্ত ফলাফলকে গুণ করে।

যদি পণ্যগুলির মধ্যে একটির শূন্য হয় তবেই যদি পণ্যটি মিথ্যা হয়, তবে যদি এবং কেবলমাত্র দুটি পর পরের অক্ষর এফ দ্বারা একই চিত্র থাকে ।


আমি মনে করি

@ অপ্টিমাইজার আমি মনে করি কোড-গল্ফ ট্যাগ উইকি বলে বাইটস

এই উত্তরে আর ASCII অক্ষর নেই।
ডেনিস

@ প্রোফেসরফিশ ট্যাগ উইকি কেবলমাত্র ডিফল্ট। যদি চ্যালেঞ্জটি অক্ষরগুলি নির্দিষ্ট করে তবে তা অক্ষর characters
মার্টিন এন্ডার

27

পাইথন 2 - 80, 68, 64, 61, 58, 50, 48, 45, 44 42

যদিও এখন এটি কিছুটা হাস্যকর হয়ে উঠছে, আমি ফ্রি লাইব্রেরি আমদানি এমনকি লাইব্রেরি ব্যবহার করা চালিয়ে যাব __builtin__:

from numpy import diff as D
from pprint import pprint as P
from __builtin__ import all as A
from __builtin__ import raw_input as I
from __builtin__ import bytearray as B

সুতরাং কোডের দৈর্ঘ্যের দিকে কেবল নিম্নলিখিত সংক্ষিপ্ত রেখা গণনা করা হয়:

P(A(D([(o-o/112-o/59)/3for o in B(I())])))

সম্পর্কিত ধারণাগুলির জন্য মারকুজে ক্রেডিট input()! এই মুক্ত-আমদানি চ্যালেঞ্জগুলি আপনাকে সর্বদা কিছু কম পরিচিত লাইব্রেরির সাথে পরিচয় করিয়ে দেয়। ;)


শুধুমাত্র operatorগ্রন্থাগার ব্যবহার করে বিকল্প ( 98, 83 79):

from operator import ne as n
K=[(ord(c)-1-(c>'p')-(c>'w'))/3for c in input()]
print all(map(n,K[1:],K[:-1]))

আমি এখানে থামব। কিন্তু আপনি গলফ এই সংস্করণ ব্যবহার আরো পারে sys, pprintএবং অন্যান্য লাইব্রেরি ...


লাইব্রেরি ছাড়াই বিকল্প (105):

s=input()
n=lambda c:(ord(c)-1-(c>'p')-(c>'w'))/3
print all([n(s[i])!=n(s[i+1])for i in range(len(s)-1)])

এবং আবার আমরা স্বতন্ত্রভাবে একই সমাধানটি রুবি এবং পাইথনে পোস্ট করি। মনে হচ্ছে এবার আপনি জিতছেন। ;) ... যাবে না আপনার কাছে 4 বাইট সংরক্ষণ, বরাদ্দ করে ord(c)একটি পরিবর্তনশীল (বলুন করতে o) এবং তারপর বিয়োগ c/112এবং c/119Booleans পরিবর্তে?
মার্টিন এন্ডার

@ মার্টিনবাটনার: হ্যাঁ, একবারে পাইথন রুবিকে পরাস্ত করতে পারে। দুর্ভাগ্যক্রমে আমি lambdaসহজেই ভাবের মধ্যে ভেরিয়েবলগুলি বরাদ্দ করতে পারি না । সঙ্গে [(o-1-o/112-o/119)/3for o in map(ord,s)]আমি 80 সঙ্গে শেষ আবার বাইট।
Falko

আহ আমি দেখি. অসুস্থ নতুন উন্নতি যদিও! : ডি
মার্টিন এন্ডার

খুব চিত্তাকর্ষক. এবং আপনি এখনও 3 বাইট সঙ্গে সংরক্ষণ করতে পারিনি from sys import argv as sব্যবহার s[1]পরিবর্তেinput()
Markuz

আমদানি inputথেকে __builtin__পাশাপাশি আসলে আরও উত্তম: ডি এখনও অন্য বাইট সংরক্ষণ।
মার্কুজ

20

রুবি রেগেক্স (সর্বাধিক জনপ্রিয় স্বাদ), 106 83 বাইট

কারণ রেজেক্স

^(?!.*(  |[abc]{2}|[def]{2}|[ghi]{2}|[jkl]{2}|[mno]{2}|[p-s]{2}|[tuv]{2}|[w-z]{2}))

আমি সবেমাত্র মধ্যস্থতাকে (রুবি) কেটেছি এবং এটি একটি খাঁটি-রেজেক্স সমাধান করেছি। প্রচুর স্বাদে কাজ করে এবং স্ট্রিংটিতে একই বোতামটিতে পরপর দুটি অক্ষর না থাকলে কেবল একটি মিল খুঁজে পাওয়া যায়।


আপনি {2}22 বাইট বাঁচিয়ে বিকল্পটির বাইরে রাখতে পারবেন না ?
নিট দ্য ডার্ক আবসোল

1
দুর্ভাগ্যবশত নিটথার্ডআবসোল না, কারণ এটি দুটি পুনরাবৃত্তির জন্য বিভিন্ন বিকল্প বেছে নিতে পারে।
মার্টিন এন্ডার

আঃ অবশ্যই আমি জানতাম যে এর একটি কারণ ছিল এক্সডি
নীট দ্য ডার্ক অ্যাবসোল

একটি পাঠযোগ্য, বোধগম্য, গল্ফযুক্ত সমাধানের জন্য কুডোস!
গ্রিনআসজেড

12

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

tr a-z $[36#8g7e9m4ddqd6]7778888|grep -Pq '(.)\1'

সত্যের জন্য 1 এবং মিথ্যাটির জন্য 0 এর একটি প্রস্থান কোড ফেরৎ দেয়:

$ for s in "x" "aardvark" "ardvark" "flonk" "im codegolfing all day long" "i indulge in minimizing bytecount" "havent heard from you in a long time" "your silence was of undue permanence" "how are  you" "how are you"; do echo "./3310.sh <<< \"$s\" returns $(./3310.sh <<< "$s"; echo $?)"; done
./3310.sh <<< "x" returns 1
./3310.sh <<< "aardvark" returns 0
./3310.sh <<< "ardvark" returns 1
./3310.sh <<< "flonk" returns 0
./3310.sh <<< "im codegolfing all day long" returns 0
./3310.sh <<< "i indulge in minimizing bytecount" returns 1
./3310.sh <<< "havent heard from you in a long time" returns 0
./3310.sh <<< "your silence was of undue permanence" returns 1
./3310.sh <<< "how are  you" returns 0
./3310.sh <<< "how are you" returns 1
$ 

খুব সুন্দর! এটি পার্লের 46 টি অক্ষর হবে: perl -pE'y/a-z/aaadddgggjjjmmmpppptttwwww/;$_=!/(.)\1/' <(echo "x")এটি সত্যের জন্য 1 টি এবং মিথ্যের জন্য কিছুই মুদ্রণ করে।
hmatt1

@ চিলিমাজিক এগিয়ে যান এবং পার্ল উত্তর পোস্ট করুন :) :) -P কমান্ড-লাইন প্যারামিটার (কোড-গল্ফ কনভেনশন অনুযায়ী) ব্যবহার করার জন্য স্কোরটিতে একটি যুক্ত করতে ভুলবেন না।
ডিজিটাল ট্রমা

আমি ভেবেছিলাম আমি ছোট করার কোনও উপায় খুঁজে পাব aaadddgggjjjmmmpppptttwwwwতবে আমি ছেড়ে দিয়েছি।
বেন জ্যাকসন

2
@ বেনজ্যাকসন আমি একটি উপায় খুঁজে পেয়েছি। আমরা আসলে যে কোনও স্বতন্ত্র অক্ষরের একটি স্ট্রিং ব্যবহার 11122233344455566667778888করতে পারি - করবে। এই সংখ্যার প্রথম 19 টি সংখ্যাকে এনকোডিং করে 36 ভিত্তিতে আমরা 1 টি সংরক্ষণ করতে পারি!
ডিজিটাল ট্রমা

9

এপিএল (ডায়ালগ), 24 23

~∨/2=/⌊¯13⌈.21-.31×⎕AV⍳⍞

∧/2≠/⌊¯13⌈.21-.31×⎕AV⍳⍞

ব্যাখ্যা

: পর্দা থেকে স্ট্রিং ইনপুট নেয়
⎕AV: এটি পারমাণবিক ভেক্টর যা মূলত সমস্ত অক্ষরের একটি স্ট্রিং এপিএল স্বীকৃতি দেয়, অবশ্যই অবশ্যই সমস্ত ছোট হাতের অক্ষর (সূচক 18 ~ 43) এবং স্পেস (সূচক 5)
: IndexOfফাংশন অন্তর্ভুক্ত করে। এপিএলে অনেকগুলি ফাংশনের জন্য যা এক বা দুটি স্কেলার আর্গুমেন্ট নেয়, আপনি এটিকে একটি স্ক্যালারের জায়গায় অ্যারে খাওয়াতে পারেন - এপিএল আপনার জন্য লুপিং করবে। সুতরাং সূচকগুলির একটি সংখ্যাযুক্ত অ্যারে প্রদান করে returns .21-.31×: টাইমস 0.31 এবং তারপরে 0.21 থেকে বিয়োগ করুন। এটি একটি সামান্য কৌশল যা একই কীতে (বিশেষত পিকিউআরএস) একই সংখ্যায় চিঠিটি মানচিত্র করে (যখন পূর্ণসংখ্যার দিকে বৃত্তাকার হয়), জেড ব্যতীত, যা নিজের গ্রুপে ম্যাপ হয়
¯13⌈: max-13 সহ। এটি জেডকে ডাব্লুএক্সওয়াইয়ের সাথে গ্রুপে ফিরিয়ে এনেছে
: পূর্ণসংখ্যার কাছে গোল করা
2≠/: পেয়ারওয়াইস-। একটানা প্রতিটি জুটির জন্য একটি বুলিয়ান অ্যারে প্রদান করে।
∧/: এবং ফলাফল অ্যারে সমস্ত এন্ট্রি একসাথে।


আমি এই জাতীয় কিছু পোস্ট করতে যাচ্ছিলাম, কিন্তু আপনি আমাকে এটি মারধর করেন। ধিক্কার জেড কী! আপনি এরপরেও 1 টি চর শেভ করতে পারেন ∧/2≠/(সমস্ত টানা জোড়া বিভিন্ন কীগুলিতে টাইপ করা হয়) এর পরিবর্তে ~∨/2=/(কোনও কি পরপর জুটি একই কীতে টাইপ করা হয় না)) এপিএল এফটিডব্লু !!!
টোবিয়া

হ্যাঁ tkx। আমি ভাবছিলাম "আমার এখানে 1 টি চর শেভ করতে সক্ষম হওয়া উচিত কেন আমি ওএমজিজিজি করতে পারি না !!!" তবে আমি ক্লাসে যেতে পেরেছিলাম তাই আমার যা আছে তা কেবল পোস্ট করি। এবং, হ্যাঁ, ধিক্কার জানাই KEY। দুর্ভাগ্যক্রমে আমি আমার ফোনে আছি তাই আমি এটি পরবর্তীকালে সম্পাদনা করতে পারছি না
টোনাটাইট

আমি ডি মরগানের আইন সম্পর্কে একটি সচেতন চিন্তাভাবনা করেছি এবং এখনও তা বুঝতে পারি না ... কীভাবে বোবা
TwiNight

1
শুভকামনা এটি আপনার বন্ধুদের পাঠানো। ;)
থান ব্রিমহল

এটি খুব আকর্ষণীয় দেখায়। ডায়ালগ এপিএল দোভাষী না কিনে এই কোডটি ব্যবহার করার কোনও উপায় আছে কি? আমি সাধারণত যে অনলাইন অনলাইন অনুবাদক ব্যবহার করি তা উপভাষাটি বোঝে বলে মনে হয় না ...
ডেনিস

7

পার্ল - 44

এটি তার অনুমতি নিয়ে পোস্ট করা @ ডিজিটালট্রামার উত্তরটির পার্ল অভিযোজন । @ কাইলস্ট্র্যান্ডকে ধন্যবাদ দিয়ে 2 টি অক্ষর বন্ধ করা হয়েছে।

y/b-y/aadddgggjjjmmmpppptttzzz/;$_=!/(.)\1/

-pপতাকা জন্য 43 টি অক্ষর । y///হিসাবে একই tr///। এটি 1সত্যের জন্য প্রিন্ট করে এবং মিথ্যা কিছু নয়। অনুরোধ করা হলে আমি বিস্তারিত ব্যাখ্যা পোস্ট করতে পারি।

উদাহরণ রান:

perl -pE'y/b-y/aadddgggjjjmmmpppptttzzz/;$_=!/(.)\1/' <(echo "x")

পার্ল - 81

$s=join"]{2}|[",qw(abc def ghi jkl mno p-s tuv w-z);say/^(?!.*(  |[$s]{2}))/?1:0

-nপতাকা জন্য +1 । এটি joinরেগেক্স তৈরি করতে ব্যবহার করে ( মার্টিনের মতো একই ), যা কয়েকটি বাইটের শেভ করে।

উদাহরণ রান:

perl -nE'$s=join"]{2}|[",qw(abc def ghi jkl mno p-s tuv w-z);say/^(?!.*(  |[$s]{2}))/?1:0' <(echo "your silence was of undue permanence")

আপনি পার্ল সমাধান থেকে দুটি অক্ষর শেভ করতে পারবেন না aএবং zলিখিত চিহ্নবিহীন অবস্থায় রেখে? y/b-y/aadddgggjjjmmmpppptttzzz/;$_=!/(.)\1/এছাড়াও, এটি স্পেসগুলি পরিচালনা করবে না, তাই না?
কাইল স্ট্র্যান্ড

... ওহ, ঠিক আছে, একটি সারিতে দুটি স্পেস ইতিমধ্যে এক সারিতে দুটি অভিন্ন অক্ষর। আমার খারাপ।
কাইল স্ট্র্যান্ড

@ কাইলস্ট্র্যান্ডকে লেট করার জন্য একই কল করুন aএবং zএকই থাকুন। আপডেট উত্তর!
hmatt1

4

জাভাস্ক্রিপ্ট - 159 156 বাইট

function g(s){p=n=-1;for(i=0;i!=s.length;i++){p=n;n=s.charCodeAt(i);n-=97;if(n>17)n--;if(n>23)n--;if(p==-1)continue;if(~~(p/3)==~~(n/3))return 0;}return 1;}

সত্যের জন্য 1 এবং মিথ্যা বলে 0 প্রদান করে।

কেবল যদি আমি কীওয়ার্ডগুলি থেকে মুক্তি পেতে পারি।


কমপক্ষে আপনি কিছু শ্বেতস্পেস থেকে মুক্তি পেতে পারেন এবং যদি :) 141:function g(s){p=n=-1;for(i=0;i<s.length;i++){p=n;n=s.charCodeAt(i)-97;n>17&&n--;n>23&&n--;if(~p)continue;if(~(p/3)==~(n/3))return 0}return 1}
অপ্টিমাইজার

আপনি নিজের উত্তরে প্রচুর আকর্ষণীয় জিনিস ব্যবহার করেন যা আমি আগে দেখিনি। আমি সাধারণত সি ++ তে লিখি তবে ভেবেছিলাম অনলাইনে পরীক্ষা করা তত দ্রুত হওয়ায় আমি জেএসকে একটি শট দেব।
লোজ্জাআ

আমি কেবল আজই এই জায়গাটি পেয়েছি এবং ভেবেছিলাম এটি একটি শট দেব। আমার পরের
চেষ্টাটি

আপনার কোডে একটি অক্ষর প্রতিস্থাপন খাটো করতে পারেন !=একটি দ্বারা লুপ জন্য <
প্রোগ্রামফক্স

হ্যাঁ এটি অপটিমাইজারের অপটিমাইজেশনে ছিল :) আমার উত্তরে লোকের পরামর্শ ব্যবহারের শিষ্টাচার কী? এখন অন্য একটি জাভাস্ক্রিপ্ট এন্ট্রি রয়েছে যা আমি এই পরিবর্তনগুলি গ্রহণ করে পরাজিত করতে পারি।
লোজ্জাহা

4

সি, 74 বাইট

main(c,d,r){for(;~(c=getchar());r*=d!=c/3,d=c/3)c-=--c/'p'*(c-'k')/7;c=r;}

TRUE এর জন্য একটি শূন্য-বহির্গমন স্থিতি এবং FALSE এর জন্য 0 প্রদান করে:

$ for s in "x" "aardvark" "ardvark" "flonk" "im codegolfing all day long" "i indulge in minimizing bytecount" "havent heard from you in a long time" "your silence was of undue permanence" "how are  you" "how are you"; do echo "./3310 <<< \"$s\" returns $(./3310 <<< "$s"; echo $?)"; done
./3310 <<< "x" returns 40
./3310 <<< "aardvark" returns 0
./3310 <<< "ardvark" returns 216
./3310 <<< "flonk" returns 0
./3310 <<< "im codegolfing all day long" returns 0
./3310 <<< "i indulge in minimizing bytecount" returns 72
./3310 <<< "havent heard from you in a long time" returns 0
./3310 <<< "your silence was of undue permanence" returns 232
./3310 <<< "how are  you" returns 0
./3310 <<< "how are you" returns 8
$ 

তুমি তোমার পরিবর্তন করে 3 বাইট সংরক্ষণ করতে পারবেন whileকরার for(;c=~getchar();d=c/3)আপনার প্রথম পরিবর্তন করে, এবং অন্য বাইট ifএকটি থেকে ?:অপারেটর।
Allbeert

@ অ্যালবার্ট - ধন্যবাদ আশেপাশে প্রথম বন্ধনীর c=getchar()প্রয়োজন যদিও এর ~চেয়ে বেশি অগ্রাধিকার রয়েছে =। তবুও, আমি অন্য দুটি বাইট নেব :)
ডিজিটাল ট্রমা

শেষ বিটের জন্য, কাজের exit(d!=c/3);পরিবর্তে কিছু পছন্দ করে if(d==c/3)exit(0);?

@ প্রফেসরফিশ যা এই মুহূর্তে প্রস্থানটি নিঃশর্ত শর্তযুক্ত করবে, যা আমি চাই না
ডিজিটাল ট্রমা

আপনি একটি অক্ষর r * = d ^ c / 3 দিয়ে সংরক্ষণ করতে পারেন
Alchymist

3

রুবি 1.8, 89 83 81 78 বাইট

p$*[0].chars.map{|c|c=c[0];(c-c/?p-c/?w-1)/3}.each_cons(2).map{|a,b|a!=b}.all?

এখানে আরেকটি জমা দেওয়া হল। আমার লজ্জার বিষয়, এটি রেজেক্সকে মারধর করে। :(

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

অ্যালগরিদমের কথা, আমি pএকের পর এক এবং দু'এক পরে চিঠিগুলি সরিয়ে নিয়ে যাচ্ছি zএবং তারপরে আমি পরীক্ষা করে দেখছি যে 3 দ্বারা পূর্ণসংখ্যা বিভাগের পরে কোনও সংঘর্ষ নেই।

পিএস: এই প্রথম, রুবি ব্যবহার করে 1.8 কোডটি সংক্ষিপ্ত করে (চরিত্রের কোডগুলি পাওয়ার জন্য ছোট পদ্ধতির কারণে))


3

কোবরা - 80

def f(s)
    for c in s
        for x in 9,if' adgjmptw'[x]>c,break
        t,f=x,t<>x
    print f

3

জাভাস্ক্রিপ্ট (ES6) 66 74

F=s=>[...s].every(c=>[...' adgjmptw'].map(x=>s+=c<x,w=s,s=0)|s!=w)

অভ্যন্তরীণ লুপ প্রতিটি অক্ষরের জন্য গ্রুপটি সন্ধান করে। ধারণাগতভাবে একটি 'হ্রাস' তবে 'মানচিত্র' সংক্ষিপ্ত। বাইরের লুপটি ধারাবাহিক বর্ণের গ্রুপের সাথে তুলনা করে এবং সমান হলে মিথ্যা দিয়ে প্রস্থান করে।

টেস্ট সালে ফায়ারফক্স / ফায়ারবাগ কনসোলটি

;["x","aardvark","ardvark","flonk","im codegolfing all day long",
"i indulge in minimizing bytecount","havent heard from you in a long time",
"your silence was of undue permanence","how are  you","how are you"]
.forEach(x=>console.log(x + ' -> ' + F(x)))

আউটপুট

x -> true
aardvark -> false
ardvark -> true
flonk -> false
im codegolfing all day long -> false
i indulge in minimizing bytecount -> true
havent heard from you in a long time -> false
your silence was of undue permanence -> true
how are  you -> false
how are you -> true

আপনি .someপ্রতিটি পরিবর্তে করতে পারেন । কারণ এটি একবারে ব্যর্থ হলেও উত্তরটি মিথ্যা।
অপ্টিমাইজার

@ অপ্টিমাইজার someএবং everyশর্তের সাথে ঝাঁকুনি দেওয়া , বিনিময়যোগ্য। তবে এখানে কেবল someপরিবর্তে রাখা everyকাজ করবে না, চেষ্টা করে দেখুন।
edc65

হুম, আপনি ঠিক বলেছেন। আমার প্রথমে আপনার যুক্তি বোঝা দরকার।
অপ্টিমাইজার

আমি [...s].everyযদি আমার গল্ফগুলিতে এই কৌশলটি ব্যবহার শুরু করি তবে দয়া করে কিছু মনে করবেন না
অপ্টিমাইজার

2

পার্ল, 83 বাইট

$_=<>;chop;map{$_=ord;$_=($_-$_/112-$_/119-1)/3;die 0 if$l==$_;$l=$_}split//;die 1

পার্লে heavy _ এর ভারী অপব্যবহার করা।


1
যেমন আপনি পর্যবেক্ষণ করতে পারেন, ইন্টারপ্রেটারকে কমান্ড-লাইন প্যারামিটারগুলি পাস করার অনুমতি দেওয়া হয়েছে, কেবল আপনাকে অতিরিক্ত পরামিতিগুলি গণনা করতে হবে। (ন্যূনতমরূপে, কোড অ্যাক্সেস করতে প্রয়োজনীয় -eপার্ল এ, মুক্ত।) 71 টি অক্ষর কম্যান্ড-লাইন পরামিতি সঙ্গে বিকল্প: perl -nlaF -e 'map{$_=ord;$_=($_-$_/112-$_/119-1)/3;die 0 if$l==$_;$l=$_}@F;die 1'
manatwork

@ মান্যাটওয়ার্ক আপনার প্রয়োজন নেই -l, তবে এটি দুর্দান্ত দেখাচ্ছে!
hmatt1

@ চিলিমাজিক, আমি কেবলমাত্র মূল কোডটির সমতুল্যর পুনরুত্পাদন করার চেষ্টা করেছি, তাই এর -lপ্রতিস্থাপন হিসাবে আমি যুক্ত করেছি chop। তবে অবশ্যই, আপনি ঠিক বলেছেন।
manatwork

ধন্যবাদ @ মান্যাটওয়ার্ক, আমি পার্লের জন্য কমান্ড লাইন বিকল্পগুলি ব্যবহার করার কথা ভাবিও নি।
mcreenan

2

পাইথনে দুটি কাজ জটিল; চেইন সনাক্তকরণ এবং গোষ্ঠীগুলি নির্ধারণ করা। দু'জনকেই নিমপ ব্যবহার করে সহায়তা করা যেতে পারে, তবে এটি স্ট্যান্ডার্ড লাইব্রেরিতে নেই।

পাইথন 2 (কেবলমাত্র স্ট্যান্ডার্ড লাইব্রেরি) - 59 টি চর ফাংশন

from itertools import imap as M
from __builtin__ import bytearray as A, all as E
from operator import ne as D, not_ as N
from re import S, sub as X, search as F

# 68
#def f(s):
# g=[(n-n/115-n/61)/3for n in A(s)]
# return E(M(D,g,g[1:]))

# 67 with regex via regex
#f=lambda s:N(F(X('(\S)(.)',r'|[\1-\2]{2}','  acdfgijlmopstvwz'),s))

# 59 slightly optimized ordinal classifier and regex sequence detector
f=lambda s:N(F(r'(.)\1',A((n-n/23-n/30)/3for n in A(s)),S))

# 69 using itertools.groupby
#from itertools import groupby as G
#from __builtin__ import sum as S, len as L
#f=lambda s:N(S(L(A(g))-1for _,g in G((n-n/115-n/61)/3for n in A(s))))

পাইথন 2 (কেবলমাত্র স্ট্যান্ডার্ড লাইব্রেরি) - মান থেকে প্রস্থান করতে 53 অক্ষর স্টিডিন

এখানে আমি যে অপব্যবহার issubclass(bool,int), তাই পরিবর্তন all()করার জন্য any()আমাকে একটি বৈধ প্রস্থান মান বন্ধ পায়, খেউরি not()ফেরত মান থেকে। ফাংশন ওভারহেড অপসারণের ফলে রেজেক্স সংস্করণগুলি আকারে পিছিয়ে যায়।

from itertools import groupby as G, imap as M
from __builtin__ import bytearray as A, any as E
from __builtin__ import raw_input as I
from sys import exit as Q
from operator import eq as S

g=[(n-n/23-n/30)/3for n in A(I())]
Q(E(M(S,g,g[1:])))

2

জে - 42 চর

ডানদিকে স্ট্রিং গ্রহণ ফাংশন।

*/@(2~:/\(I.4 3 4 1,~5#3){~(u:97+i.26)&i.)

প্রথমে আমরা বর্ণমালা ( u:97+i.26) কে 0 থেকে 25 সংখ্যায় ম্যাপ করি , অন্যান্য সমস্ত অক্ষর (স্পেস সহ) 26 ( i.) এ চলেছে । তারপরে আমরা ( {~) প্রথম তিনটি উপাদানকে প্রথম কীটিতে ম্যাপ করি, পরের তিনটি পরের চাবিতে এবং তারপরে ফোন প্যাডের কীগুলি দিয়ে স্পেস / অন্যান্য বিরামচিহ্নগুলি ম্যাপ করার জন্য শেষে একটি পৃথক কীতে নিশ্চিত করে ফেলি । ( 4 3 4 1,~5#3এর সমান 3 3 3 3 3 4 3 4 1এবং I.এটি একটি 27-আইটেমের অ্যারেতে পরিণত হয় যেখানে প্রথম তিনটি কী 1 ইত্যাদি etc.) তারপরে আমরা জোড়াযুক্ত অসমতার জন্য পরীক্ষা করি ( 2~:/\) এবং সমস্ত ফলাফল একসাথে ( */)।

   */@(2~:/\(I.4 3 4 1,~5#3){~(u:97+i.26)&i.) 'i indulge in minimizing bytecount'
1
   f =: */@(2~:/\(I.4 3 4 1,~5#3){~(u:97+i.26)&i.)
   f 'im codegolfing all day long'
0
   f '*/@(2~:/\(I.4 3 4 1,~5#3){~(u:97+i.26)&i.)'  NB. no -3 bonus :(
0

2

র‌্যাকেট, 119

(define(f t)(for*/and([s(map ~a'(abc def ghi jkl mno pqrs tuv wxyz))][i s][j s])(not(regexp-match(format"~a~a"i j)t))))

অবহেলিত (সংযোজক রেজেক্সিং):

(define(f t)
  (for*/and([s (map ~a '(abc def ghi jkl mno pqrs tuv wxyz))]
            [i s]
            [j s])
    (not (regexp-match (format "~a~a" i j) t))))

1

জাভাস্ক্রিপ্ট - 152

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

function m(a){c="abc-def-ghi-jkl-mno-pqrstuv-wxyz";j=a.split("");for(z in j)if(j[z]=Math.floor(c.indexOf(j[z])/4),0!=z&&j[z-1]==j[z])return 0;return 1};

সমস্ত পরীক্ষা পাস।
মাল্টি টাইপ অ্যারে করার জন্য জেএসের টাইপিংয়ের অভাবের সুবিধা নেয় এবং স্থান সহায়তার জন্য এটি সূচীফ -1 ফেরতের সুবিধা নেয় takes

ব্যবহার:

m("string here")

কেবল ছোট বর্ণমালার অক্ষর এবং ফাঁকা স্থান ধরে নেয় Ass সত্যের জন্য 1, মিথ্যা হিসাবে 0 প্রদান করে।

আমি যদি ES6 জানতাম তবে আমি দ্বিতীয় চ্যালেঞ্জটি চেষ্টা করতে পারি ...


"যদি কেবল ..." - আপনি কি আমার উত্তরটি দেখেছেন? : পি
অপ্টিমাইজার 21

হ্যা, আমি করেছিলাম. দুঃখের সাথে আমি ES6 (এখনও) জানি না। তবে এটি তৈরি করা আকর্ষণীয় ছিল।
ড্যাঙ্কমেস

হ্যাঁ, আপনার সমাধানটি একটি আকর্ষণীয় পদ্ধতির ব্যবহার করে।
অপ্টিমাইজার 21

1

ES6, জাভাস্ক্রিপ্ট 89 70 টি অক্ষর

আমি এটির বিজয়ী না জানি কারণ চরিত্রের ASCII মান পাওয়ার মতো কার্যকর ক্রিয়াকলাপে আসার সময়, জেএস প্রচুর পরিমাণে ফুলিয়ে যায় ( .charCodeAt())।

N=s=>[...s].every(c=>l-(l=(c.charCodeAt()-(c>"r")-(c>"y")-1)/3|0),l=1)

এটি সর্বশেষতম ফায়ারফক্সের ওয়েব কনসোলে চালান।

ব্যবহার:

N("testing if this works")

ফাংশনটি সত্য বা মিথ্যা প্রত্যাবর্তন করে।

সম্পাদনা : [...x].every@ এডসি 65 এর কাছ থেকে শেখা কৌশলটি ব্যবহার করে প্রচুর গল্ফ হয়েছে (ধন্যবাদ!)

আমি এটি আরও গল্ফ করার চেষ্টা করব :)


0

জিএমএল (গেম মেকার ল্যাঙ্গুয়েজ), 149

s=argument0p=n=-1for(i=0;i<string_length(s);i++){p=n;n=string_char_at(s,i)-97;x=n>17&&n--;x=n>23&&n--‌​;if(!p)x=1if(!(p/3)=!(n/3))x=0}show_message(x)

0

পাইথন 3 - 152 অক্ষর

আমি যেতে পারি সবচেয়ে কম, তবে এটি এখনই করবে

k=['abc','def','ghi','jkl','mno','pqrs','tuv','wxyz',' ']
x=input()
l=2>1
for i in range(len(x)-1):
 for j in k:
  if x[i+1] in j and x[i] in j:l=1>2
print(l)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.