একটি ছোট টোটোগ্রাম চেকার আছে? [বন্ধ]


10

আমি সম্প্রতি কোড-গল্ফিংয়ে gotুকেছি এবং ক্ষুদ্রতম টোটোগ্রাম পরীক্ষক লেখার চেষ্টা করেছি।

একজন tautogram : একটি বাক্য যা সব শব্দ একই অক্ষর দিয়ে শুরু করতে, উদাহরণস্বরূপ হয় ফুল ফ্রান্সের ঝঙ্কার

ইনপুট হিসাবে একটি বাক্য দেওয়া হয়েছে তা নির্ধারণ করুন এটি কোনও টোটোগ্রাম কিনা।

পরীক্ষার কেস

Flowers flourish from France
    True

This is not a Tautogram
    False

আমি এই অজগর কোডটি নিয়ে এসেছি (কারণ এটি আমার মূল ভাষা):

print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)

ব্যবহার:

python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False

বাক্যে কমা ও পিরিয়ড থাকতে পারে তবে অন্য কোনও বিশেষ অক্ষর নেই, কেবলমাত্র উচ্চ এবং নিম্নের অক্ষর এবং স্পেস থাকে।

এর আকার 98 বাইট। কোন ভাষায় এর চেয়েও ছোট সমাধান আছে?


1
এটি কি tipsপ্রশ্ন হিসাবে সীমাবদ্ধ সীমাবদ্ধ Python? যদি তা হয় তবে এই দুটি ট্যাগই যুক্ত করা উচিত।
আর্নল্ড

2
হিয়া বন্ধু! এই সাইটটি সাধারণত সুস্পষ্টভাবে সংজ্ঞায়িত সমস্যার জন্য সংরক্ষিত থাকে। "ইনপুটে বিরামচিহ্ন থাকতে পারে" এর মতো বিষয়গুলির পোস্ট দেওয়ার আগে উত্তর দেওয়া উচিত, তবে এ ছাড়া আমরা সাধারণত যে নতুন নতুন ব্যবহারকারী প্রশ্নের সাথে দেখি তার তুলনামূলকভাবে এটি প্রথম দুর্দান্ত প্রশ্ন। আপনার উদাহরণগুলির দ্বারা বিচার করে আমি কেবল পরিষ্কার করে দিয়েছি যে ইনপুটটিতে কেবলমাত্র অক্ষরগুলি "[এ-জা-জেড]" হবে এবং আপনার প্রশ্নটি নিখুঁত উদ্দেশ্যমূলক হবে। আমি এখানে আরও কিছু প্রশ্ন করলাম, নাহলে এটি সত্যিই ওভারফ্লোতে আরও ভাল ফিট হতে পারে।
ম্যাজিক অক্টোপাস উরন

1
বিরামচিহ্ন বলতে কী বোঝ? কোন চরিত্রগুলি অন্তর্ভুক্ত করা হয়েছে?
অজ্ঞতার

1
@ ম্যাজিক অ্যাক্টোপাস ইউরন কখনও কখনও যখন আপনি স্ট্যাক ওভারফ্লোতে একটি সংক্ষিপ্ত সমাধানের জন্য জিজ্ঞাসা করেন তবে এই সাইটের রেফার করুন :)
লুইস

6
পিপিসিজিতে আপনাকে স্বাগতম! আরও কয়েকটি পরীক্ষার কেস (বিরামচিহ্ন সহ) এই চ্যালেঞ্জের দুর্দান্ত সংযোজন হবে।
অ্যাডমবর্কবার্ক

উত্তর:




3

ক্লোজার , 80 বাইট

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

(fn[s](use '[clojure.string])(apply =(map first(map lower-case(split s #" ")))))

Ungolfed:

(defn tautogram? [s]
  (use '[clojure.string])
  (->> (split s #" ") ; Get words
       (map lower-case)
       (map first) ; Get first letter of each word
       (apply =))) ; And make sure they're all the same

আমি এমন একটি সংস্করণ তৈরি করেছি যা আমদানি এড়িয়ে চলে:

(fn [s](apply =(map #(if(<(-(int %)32)65)(int %)(-(int %) 32))(map first(take-nth 2(partition-by #(= %\ )s))))))

 ; -----

(defn tautogram? [s]
  (->> s
       (partition-by #(= % \ )) ; Split into words
       (take-nth 2) ; Remove spaces
       (map first) ; Get first letter
       ; Convert to uppercased letter code
       (map #(if (< (- (int %) 32) 65) ; If attempting to uppercase puts the letter out of range,
               (int %) ; Go with the current code
               (- (int %) 32))) ; Else go with the uppercased  code
       (apply =))) ; And check if they're all equal

তবে এটি 112 বাইট


এখানে আমার র্যাকেট সমাধান:(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
গ্যালেন ইভানভ

পিকোলিস্টে অনেক খাটো:(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
গ্যালেন ইভানভ

3

পাওয়ারশেল , 57 50 41 বাইট

(-split$args|% s*g 0 1|sort -u).count-eq1

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

ইনপুট নেয় এবং splitএটি হোয়াইট স্পেসে রাখে। প্রতিটি শব্দ মাধ্যমে loops, এবং গ্রহণ করে প্রথম চিঠি grabs substrin gঅবস্থানে শুরু 0এবং জন্য যাচ্ছে 1অক্ষর। তারপর sortবর্ণ (কেস-অবশ ডিফল্টরূপে) সঙ্গে গুলি -unique পতাকা প্রতিটি অক্ষর শুধু একটি কপি, যাচাই উঠিয়ে ফেলা countনামগুলো হয় -eqকরতে ual 1। আউটপুট জড়িত।

মাইজিকে ধন্যবাদ -9 বাইটস




1
@ মাজিজি উদ্দেশ্যটি বোঝার চেষ্টা করা স্থির করেছেন
নাহুয়েল ফুইলুল ২

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

আমি রাজি. তবে এই প্রশ্নটি আটকে দেওয়া হয়েছে, তাই আমি একটি নতুন উত্তর তৈরি করতে পারি না।
mazzy


2

ব্র্যাচল্যাগ , 5 বাইট

ḷṇ₁hᵛ

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

         The input
ḷ        lowercased
 ṇ₁      and split on spaces
   hᵛ    is a list of elements which all start with the same thing.

আমি এখন লক্ষ্য করেছি যে, এই যতিচিহ্ন হ্যান্ডেল করতে সক্ষম হতে হয়েছে, কিন্তু কোনো punctuated পরীক্ষার বিষয় ছাড়া আমি বলতে যদি না এই আছে অথবা এখনও কাজ করছে না করতে পারেন ...
অসম্পর্কিত স্ট্রিং

2

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

f s|c<-fromEnum.head<$>words s=all(`elem`[-32,0,32]).zipWith(-)c$tail c

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


হাস্কেল , 61 58 বাইট (ব্যবহার Data.Char.toLower)

import Data.Char
(all=<<(==).head).(toLower.head<$>).words

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


@ নিমি আপনাকে ধন্যবাদ
জোনাথন ফ্রেচ

2

পার্ল 5 ( -p), 20 বাইট

$_=!/^(.).* (?!\1)/i

Tio

খারাপ বিরামচিহ্ন ক্ষেত্রে নিম্নলিখিত মন্তব্যসমূহ (31 বাইট)

$_=!/^\W*+(.).*(?=\b\w)(?!\1)/i

31 বাইট

অন্যথায় 31 টি বাইট সহ অন্য পদ্ধতি রয়েছে:

$h{ord()%32}++for/\w+/g;$_=2>%h

31 বাইট অন্য


বিরামচিহ্ন সম্পর্কে কি? স্ট্রিংয়ের স্ট্রার্টে ফাঁকা স্থান এবং বিরামচিহ্নগুলি সম্পর্কে কী?
mazzy

এই উত্তর প্রদত্ত পরীক্ষাগুলির ক্ষেত্রে কাজ করে, প্রয়োজনীয়তাগুলির উপর নির্ভর করে উন্নতি করা যেতে পারে$_=!/^\W*+(.).*(?=\b\w)(?!\1)/i
নাহুয়েল ফুইলুল

তবে অবিচ্ছিন্নভাবে প্রশ্ন এবং প্রদত্ত সমাধানটি পড়া শুরুতে ফাঁকা স্থানগুলি ঘটতে পারে না কারণ শেল দ্বারা আর্গুমেন্টগুলি বিভক্ত করতে ফাঁকা স্থান ব্যবহার করা হয়। প্রোগ্রামটি কেবলমাত্র যাচাই করে যে সমস্ত যুক্তি একই অক্ষর দিয়ে শুরু হয়
নাহুয়েল ফিউইলুল ২

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 54 বাইট

s=>!s.match(/\b\w+/g).some(p=s=>p-(p=Buffer(s)[0]&31))

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

বা 47 বাইট যদি প্রতিটি শব্দ (তবে প্রথমটি) কোনও স্পেসের আগে গ্যারান্টিযুক্ত থাকে।


অথবা এক Regex বা পরিবর্তে একটি স্পেস দিয়ে\W
Nahuel Fouilleul

@ নাহুয়েলফৌইলুল, testঅন্য একটি বাইট সংরক্ষণ করে।
শেগি

1
@ নাহুয়েলফৌইলুল আপনি সম্ভবত পোস্ট আলাদাভাবে করা উচিত।
আর্নল্ড

ইতিমধ্যে পার্ল সংস্করণ পোস্ট করেছে, আমি পাশাপাশি জাভাস্ক্রিপ্টও আয়ত্ত করতে পারি না, আপনাকে একটি ইঙ্গিত দিতে পেরে আমি খুশি
নাহুয়েল ফুয়েলুল




1

জাভা, (36 বাইট)

s->!s.matches("(?i)(.).* (?!\\1).*")

Tio


1
আমি মনে করি ইনপুটটি কোনও স্থান দিয়ে শুরু করার অনুমতি দেওয়া হয়েছে এবং এটি এর মতো ইনপুটটির জন্য কাজ করে না
সারা জে

প্রকৃতপক্ষে এটা একটি পরীক্ষা কেস না, কিন্তু এই করা যাবে ঘাঁটা যোগ (?> *)পারমাণবিক গ্রুপ ব্যবহার করছেন শুরুতে এবং pevent bactracking স্থান মেলে। কেবল `* work কাজ করে না কারণ ব্যর্থ ম্যাচগুলির পরে খালি স্ট্রিংয়ের সাথে ম্যাচ
করতে`

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