Is there a smaller tautogram checker? [on hold]
$begingroup$
I got into code-golfing recently and tried to write the smallest tautogram checker.
A tautogram is a sentence in which all words start with the same letter, for example: Flowers flourish from France.
Given a sentence as input, determine whether it is a tautogram.
Test Cases
Flowers flourish from France
True
This is not a Tautogram
False
I came up with this python code (because it is my main language):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Usage:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
The sentence may contain commas and periods, but no other special characters, only upper and lower case letters and spaces.
Its size is 98 bytes. Is there a smaller solution in any language?
code-golf string decision-problem
New contributor
$endgroup$
put on hold as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan 4 hours ago
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
|
show 6 more comments
$begingroup$
I got into code-golfing recently and tried to write the smallest tautogram checker.
A tautogram is a sentence in which all words start with the same letter, for example: Flowers flourish from France.
Given a sentence as input, determine whether it is a tautogram.
Test Cases
Flowers flourish from France
True
This is not a Tautogram
False
I came up with this python code (because it is my main language):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Usage:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
The sentence may contain commas and periods, but no other special characters, only upper and lower case letters and spaces.
Its size is 98 bytes. Is there a smaller solution in any language?
code-golf string decision-problem
New contributor
$endgroup$
put on hold as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan 4 hours ago
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
1
$begingroup$
Is it intended as atips
question limited toPython
? If so, these both tags should be added.
$endgroup$
– Arnauld
7 hours ago
2
$begingroup$
Heya friend! This site is usually reserved for explicitly defined problems. Things like "can the input contain punctuation" should be answered before posting, but other than that this is a great first question comparatively to the other new-user questions we usually see. Judging by your examples I'd just clarify that the only characters in the input will be "[A-Za-z ]" and your question will be purely objective. I'd scope out some other questions around here, else this may honestly be a better fit on overflow.
$endgroup$
– Magic Octopus Urn
7 hours ago
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
6 hours ago
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
6 hours ago
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
6 hours ago
|
show 6 more comments
$begingroup$
I got into code-golfing recently and tried to write the smallest tautogram checker.
A tautogram is a sentence in which all words start with the same letter, for example: Flowers flourish from France.
Given a sentence as input, determine whether it is a tautogram.
Test Cases
Flowers flourish from France
True
This is not a Tautogram
False
I came up with this python code (because it is my main language):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Usage:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
The sentence may contain commas and periods, but no other special characters, only upper and lower case letters and spaces.
Its size is 98 bytes. Is there a smaller solution in any language?
code-golf string decision-problem
New contributor
$endgroup$
I got into code-golfing recently and tried to write the smallest tautogram checker.
A tautogram is a sentence in which all words start with the same letter, for example: Flowers flourish from France.
Given a sentence as input, determine whether it is a tautogram.
Test Cases
Flowers flourish from France
True
This is not a Tautogram
False
I came up with this python code (because it is my main language):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Usage:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
The sentence may contain commas and periods, but no other special characters, only upper and lower case letters and spaces.
Its size is 98 bytes. Is there a smaller solution in any language?
code-golf string decision-problem
code-golf string decision-problem
New contributor
New contributor
edited 4 hours ago
trichoplax
7,50664276
7,50664276
New contributor
asked 7 hours ago
Jaime TenorioJaime Tenorio
413
413
New contributor
New contributor
put on hold as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan 4 hours ago
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
put on hold as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan 4 hours ago
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
1
$begingroup$
Is it intended as atips
question limited toPython
? If so, these both tags should be added.
$endgroup$
– Arnauld
7 hours ago
2
$begingroup$
Heya friend! This site is usually reserved for explicitly defined problems. Things like "can the input contain punctuation" should be answered before posting, but other than that this is a great first question comparatively to the other new-user questions we usually see. Judging by your examples I'd just clarify that the only characters in the input will be "[A-Za-z ]" and your question will be purely objective. I'd scope out some other questions around here, else this may honestly be a better fit on overflow.
$endgroup$
– Magic Octopus Urn
7 hours ago
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
6 hours ago
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
6 hours ago
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
6 hours ago
|
show 6 more comments
1
$begingroup$
Is it intended as atips
question limited toPython
? If so, these both tags should be added.
$endgroup$
– Arnauld
7 hours ago
2
$begingroup$
Heya friend! This site is usually reserved for explicitly defined problems. Things like "can the input contain punctuation" should be answered before posting, but other than that this is a great first question comparatively to the other new-user questions we usually see. Judging by your examples I'd just clarify that the only characters in the input will be "[A-Za-z ]" and your question will be purely objective. I'd scope out some other questions around here, else this may honestly be a better fit on overflow.
$endgroup$
– Magic Octopus Urn
7 hours ago
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
6 hours ago
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
6 hours ago
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
6 hours ago
1
1
$begingroup$
Is it intended as a
tips
question limited to Python
? If so, these both tags should be added.$endgroup$
– Arnauld
7 hours ago
$begingroup$
Is it intended as a
tips
question limited to Python
? If so, these both tags should be added.$endgroup$
– Arnauld
7 hours ago
2
2
$begingroup$
Heya friend! This site is usually reserved for explicitly defined problems. Things like "can the input contain punctuation" should be answered before posting, but other than that this is a great first question comparatively to the other new-user questions we usually see. Judging by your examples I'd just clarify that the only characters in the input will be "[A-Za-z ]" and your question will be purely objective. I'd scope out some other questions around here, else this may honestly be a better fit on overflow.
$endgroup$
– Magic Octopus Urn
7 hours ago
$begingroup$
Heya friend! This site is usually reserved for explicitly defined problems. Things like "can the input contain punctuation" should be answered before posting, but other than that this is a great first question comparatively to the other new-user questions we usually see. Judging by your examples I'd just clarify that the only characters in the input will be "[A-Za-z ]" and your question will be purely objective. I'd scope out some other questions around here, else this may honestly be a better fit on overflow.
$endgroup$
– Magic Octopus Urn
7 hours ago
1
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
6 hours ago
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
6 hours ago
1
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
6 hours ago
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
6 hours ago
6
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
6 hours ago
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
6 hours ago
|
show 6 more comments
13 Answers
13
active
oldest
votes
$begingroup$
05AB1E, 5 bytes
l#€нË
Try it online!
Did this on mobile excuse the no explanation.
$endgroup$
add a comment |
$begingroup$
Python 2, 47 bytes
lambda s:len(set(zip(*s.lower().split())[0]))<2
Try it online!
Came up with this on mobile. Can probably be golfed more.
$endgroup$
add a comment |
$begingroup$
PowerShell, 57 50 bytes
(-split"$args"|%{"$($_[0])"}|group).Name.count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, takes the first letter $_[0]
. Then group
s the letters (case-insensitive by default), takes the name
s, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
The Group).Name.count
seems long, but I can't figure out how to shorten it yet.
$endgroup$
add a comment |
$begingroup$
Clojure, 80 bytes
Try it online!. TIO doesn't support Clojure's standard String library though, so the first version will throw a "Can't find lower-case" error.
(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
I made a version that avoids the import:
(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
But it's 112 Bytes.
$endgroup$
add a comment |
$begingroup$
05AB1E (legacy), 5 bytes
#€¬uË
Try it online!
# // split on spaces
€¬ // get the first letter of each word
uË // check if they're the same (uppercase) letter
$endgroup$
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
$endgroup$
add a comment |
$begingroup$
Haskell, 71 bytes
f s|c<-fromEnum.head<$>words s=all(`elem`[-32,0,32]).zipWith(-)c$tail c
Try it online!
Haskell, 61 58 bytes (using Data.Char.toLower
)
- Saved three bytes thanks to nimi.
import Data.Char
(all=<<(==).head).(toLower.head<$>).words
Try it online!
$endgroup$
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
3 hours ago
add a comment |
$begingroup$
JavaScript (Node.js), 54 bytes
s=>!s.match(/bw+/g).some(p=s=>p-(p=Buffer(s)[0]&31))
Try it online!
Or 47 bytes if each word (but the first) is guaranteed to be preceded by a space.
$endgroup$
$begingroup$
or in one regex or with a space instead ofW
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
5 hours ago
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
5 hours ago
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
5 hours ago
add a comment |
$begingroup$
Japt -¡
, 5 bytes
¸mÎro
Try it
¸mÎro :Implicit input of string
¸ :Split on spaces
m :Map
Î : Get first character
r :Reduce by
o : Keeping the characters that appear in both, case-insensitive
:Implicit output as boolean
$endgroup$
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 41 bytes
n=>n.Split().GroupBy(c=>c[0]|32).Single()
Throws an exception if false, nothing if true.
Try it online!
$endgroup$
add a comment |
$begingroup$
Perl 6, 19 bytes
{[eq] m:g/<<./}o&lc
Try it online!
$endgroup$
add a comment |
$begingroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
$endgroup$
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
4 hours ago
add a comment |
$begingroup$
Brachylog, 5 bytes
ḷṇ₁hᵛ
Try it online!
The input
ḷ lowercased
ṇ₁ and split on spaces
hᵛ is a list of elements which all start with the same thing.
$endgroup$
$begingroup$
I just now noticed that this has to be able to handle punctuation, but without any punctuated test cases I can't tell if this does or doesn't still work...
$endgroup$
– Unrelated String
4 hours ago
add a comment |
13 Answers
13
active
oldest
votes
13 Answers
13
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
05AB1E, 5 bytes
l#€нË
Try it online!
Did this on mobile excuse the no explanation.
$endgroup$
add a comment |
$begingroup$
05AB1E, 5 bytes
l#€нË
Try it online!
Did this on mobile excuse the no explanation.
$endgroup$
add a comment |
$begingroup$
05AB1E, 5 bytes
l#€нË
Try it online!
Did this on mobile excuse the no explanation.
$endgroup$
05AB1E, 5 bytes
l#€нË
Try it online!
Did this on mobile excuse the no explanation.
answered 6 hours ago
Magic Octopus UrnMagic Octopus Urn
12.8k444126
12.8k444126
add a comment |
add a comment |
$begingroup$
Python 2, 47 bytes
lambda s:len(set(zip(*s.lower().split())[0]))<2
Try it online!
Came up with this on mobile. Can probably be golfed more.
$endgroup$
add a comment |
$begingroup$
Python 2, 47 bytes
lambda s:len(set(zip(*s.lower().split())[0]))<2
Try it online!
Came up with this on mobile. Can probably be golfed more.
$endgroup$
add a comment |
$begingroup$
Python 2, 47 bytes
lambda s:len(set(zip(*s.lower().split())[0]))<2
Try it online!
Came up with this on mobile. Can probably be golfed more.
$endgroup$
Python 2, 47 bytes
lambda s:len(set(zip(*s.lower().split())[0]))<2
Try it online!
Came up with this on mobile. Can probably be golfed more.
answered 6 hours ago
TFeldTFeld
16k21449
16k21449
add a comment |
add a comment |
$begingroup$
PowerShell, 57 50 bytes
(-split"$args"|%{"$($_[0])"}|group).Name.count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, takes the first letter $_[0]
. Then group
s the letters (case-insensitive by default), takes the name
s, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
The Group).Name.count
seems long, but I can't figure out how to shorten it yet.
$endgroup$
add a comment |
$begingroup$
PowerShell, 57 50 bytes
(-split"$args"|%{"$($_[0])"}|group).Name.count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, takes the first letter $_[0]
. Then group
s the letters (case-insensitive by default), takes the name
s, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
The Group).Name.count
seems long, but I can't figure out how to shorten it yet.
$endgroup$
add a comment |
$begingroup$
PowerShell, 57 50 bytes
(-split"$args"|%{"$($_[0])"}|group).Name.count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, takes the first letter $_[0]
. Then group
s the letters (case-insensitive by default), takes the name
s, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
The Group).Name.count
seems long, but I can't figure out how to shorten it yet.
$endgroup$
PowerShell, 57 50 bytes
(-split"$args"|%{"$($_[0])"}|group).Name.count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, takes the first letter $_[0]
. Then group
s the letters (case-insensitive by default), takes the name
s, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
The Group).Name.count
seems long, but I can't figure out how to shorten it yet.
answered 6 hours ago
AdmBorkBorkAdmBorkBork
27.5k466237
27.5k466237
add a comment |
add a comment |
$begingroup$
Clojure, 80 bytes
Try it online!. TIO doesn't support Clojure's standard String library though, so the first version will throw a "Can't find lower-case" error.
(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
I made a version that avoids the import:
(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
But it's 112 Bytes.
$endgroup$
add a comment |
$begingroup$
Clojure, 80 bytes
Try it online!. TIO doesn't support Clojure's standard String library though, so the first version will throw a "Can't find lower-case" error.
(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
I made a version that avoids the import:
(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
But it's 112 Bytes.
$endgroup$
add a comment |
$begingroup$
Clojure, 80 bytes
Try it online!. TIO doesn't support Clojure's standard String library though, so the first version will throw a "Can't find lower-case" error.
(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
I made a version that avoids the import:
(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
But it's 112 Bytes.
$endgroup$
Clojure, 80 bytes
Try it online!. TIO doesn't support Clojure's standard String library though, so the first version will throw a "Can't find lower-case" error.
(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
I made a version that avoids the import:
(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
But it's 112 Bytes.
edited 4 hours ago
answered 4 hours ago
CarcigenicateCarcigenicate
2,33911224
2,33911224
add a comment |
add a comment |
$begingroup$
05AB1E (legacy), 5 bytes
#€¬uË
Try it online!
# // split on spaces
€¬ // get the first letter of each word
uË // check if they're the same (uppercase) letter
$endgroup$
add a comment |
$begingroup$
05AB1E (legacy), 5 bytes
#€¬uË
Try it online!
# // split on spaces
€¬ // get the first letter of each word
uË // check if they're the same (uppercase) letter
$endgroup$
add a comment |
$begingroup$
05AB1E (legacy), 5 bytes
#€¬uË
Try it online!
# // split on spaces
€¬ // get the first letter of each word
uË // check if they're the same (uppercase) letter
$endgroup$
05AB1E (legacy), 5 bytes
#€¬uË
Try it online!
# // split on spaces
€¬ // get the first letter of each word
uË // check if they're the same (uppercase) letter
answered 6 hours ago
RileyRiley
11k11448
11k11448
add a comment |
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
$endgroup$
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
$endgroup$
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
$endgroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
answered 6 hours ago
Nahuel FouilleulNahuel Fouilleul
2,925211
2,925211
add a comment |
add a comment |
$begingroup$
Haskell, 71 bytes
f s|c<-fromEnum.head<$>words s=all(`elem`[-32,0,32]).zipWith(-)c$tail c
Try it online!
Haskell, 61 58 bytes (using Data.Char.toLower
)
- Saved three bytes thanks to nimi.
import Data.Char
(all=<<(==).head).(toLower.head<$>).words
Try it online!
$endgroup$
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
3 hours ago
add a comment |
$begingroup$
Haskell, 71 bytes
f s|c<-fromEnum.head<$>words s=all(`elem`[-32,0,32]).zipWith(-)c$tail c
Try it online!
Haskell, 61 58 bytes (using Data.Char.toLower
)
- Saved three bytes thanks to nimi.
import Data.Char
(all=<<(==).head).(toLower.head<$>).words
Try it online!
$endgroup$
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
3 hours ago
add a comment |
$begingroup$
Haskell, 71 bytes
f s|c<-fromEnum.head<$>words s=all(`elem`[-32,0,32]).zipWith(-)c$tail c
Try it online!
Haskell, 61 58 bytes (using Data.Char.toLower
)
- Saved three bytes thanks to nimi.
import Data.Char
(all=<<(==).head).(toLower.head<$>).words
Try it online!
$endgroup$
Haskell, 71 bytes
f s|c<-fromEnum.head<$>words s=all(`elem`[-32,0,32]).zipWith(-)c$tail c
Try it online!
Haskell, 61 58 bytes (using Data.Char.toLower
)
- Saved three bytes thanks to nimi.
import Data.Char
(all=<<(==).head).(toLower.head<$>).words
Try it online!
edited 3 hours ago
answered 6 hours ago
Jonathan FrechJonathan Frech
6,47311040
6,47311040
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
3 hours ago
add a comment |
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
3 hours ago
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
3 hours ago
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
3 hours ago
add a comment |
$begingroup$
JavaScript (Node.js), 54 bytes
s=>!s.match(/bw+/g).some(p=s=>p-(p=Buffer(s)[0]&31))
Try it online!
Or 47 bytes if each word (but the first) is guaranteed to be preceded by a space.
$endgroup$
$begingroup$
or in one regex or with a space instead ofW
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
5 hours ago
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
5 hours ago
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
5 hours ago
add a comment |
$begingroup$
JavaScript (Node.js), 54 bytes
s=>!s.match(/bw+/g).some(p=s=>p-(p=Buffer(s)[0]&31))
Try it online!
Or 47 bytes if each word (but the first) is guaranteed to be preceded by a space.
$endgroup$
$begingroup$
or in one regex or with a space instead ofW
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
5 hours ago
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
5 hours ago
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
5 hours ago
add a comment |
$begingroup$
JavaScript (Node.js), 54 bytes
s=>!s.match(/bw+/g).some(p=s=>p-(p=Buffer(s)[0]&31))
Try it online!
Or 47 bytes if each word (but the first) is guaranteed to be preceded by a space.
$endgroup$
JavaScript (Node.js), 54 bytes
s=>!s.match(/bw+/g).some(p=s=>p-(p=Buffer(s)[0]&31))
Try it online!
Or 47 bytes if each word (but the first) is guaranteed to be preceded by a space.
answered 6 hours ago
ArnauldArnauld
79.6k797330
79.6k797330
$begingroup$
or in one regex or with a space instead ofW
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
5 hours ago
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
5 hours ago
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
5 hours ago
add a comment |
$begingroup$
or in one regex or with a space instead ofW
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
5 hours ago
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
5 hours ago
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
or in one regex or with a space instead of
W
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
or in one regex or with a space instead of
W
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
@NahuelFouilleul, using
test
saves another byte.$endgroup$
– Shaggy
5 hours ago
$begingroup$
@NahuelFouilleul, using
test
saves another byte.$endgroup$
– Shaggy
5 hours ago
1
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
5 hours ago
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
5 hours ago
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
5 hours ago
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
5 hours ago
add a comment |
$begingroup$
Japt -¡
, 5 bytes
¸mÎro
Try it
¸mÎro :Implicit input of string
¸ :Split on spaces
m :Map
Î : Get first character
r :Reduce by
o : Keeping the characters that appear in both, case-insensitive
:Implicit output as boolean
$endgroup$
add a comment |
$begingroup$
Japt -¡
, 5 bytes
¸mÎro
Try it
¸mÎro :Implicit input of string
¸ :Split on spaces
m :Map
Î : Get first character
r :Reduce by
o : Keeping the characters that appear in both, case-insensitive
:Implicit output as boolean
$endgroup$
add a comment |
$begingroup$
Japt -¡
, 5 bytes
¸mÎro
Try it
¸mÎro :Implicit input of string
¸ :Split on spaces
m :Map
Î : Get first character
r :Reduce by
o : Keeping the characters that appear in both, case-insensitive
:Implicit output as boolean
$endgroup$
Japt -¡
, 5 bytes
¸mÎro
Try it
¸mÎro :Implicit input of string
¸ :Split on spaces
m :Map
Î : Get first character
r :Reduce by
o : Keeping the characters that appear in both, case-insensitive
:Implicit output as boolean
answered 6 hours ago
ShaggyShaggy
18.9k21667
18.9k21667
add a comment |
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 41 bytes
n=>n.Split().GroupBy(c=>c[0]|32).Single()
Throws an exception if false, nothing if true.
Try it online!
$endgroup$
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 41 bytes
n=>n.Split().GroupBy(c=>c[0]|32).Single()
Throws an exception if false, nothing if true.
Try it online!
$endgroup$
add a comment |
$begingroup$
C# (Visual C# Interactive Compiler), 41 bytes
n=>n.Split().GroupBy(c=>c[0]|32).Single()
Throws an exception if false, nothing if true.
Try it online!
$endgroup$
C# (Visual C# Interactive Compiler), 41 bytes
n=>n.Split().GroupBy(c=>c[0]|32).Single()
Throws an exception if false, nothing if true.
Try it online!
answered 6 hours ago
Embodiment of IgnoranceEmbodiment of Ignorance
2,168125
2,168125
add a comment |
add a comment |
$begingroup$
Perl 6, 19 bytes
{[eq] m:g/<<./}o&lc
Try it online!
$endgroup$
add a comment |
$begingroup$
Perl 6, 19 bytes
{[eq] m:g/<<./}o&lc
Try it online!
$endgroup$
add a comment |
$begingroup$
Perl 6, 19 bytes
{[eq] m:g/<<./}o&lc
Try it online!
$endgroup$
Perl 6, 19 bytes
{[eq] m:g/<<./}o&lc
Try it online!
answered 5 hours ago
nwellnhofnwellnhof
7,38011128
7,38011128
add a comment |
add a comment |
$begingroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
$endgroup$
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
4 hours ago
add a comment |
$begingroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
$endgroup$
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
4 hours ago
add a comment |
$begingroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
$endgroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
answered 4 hours ago
Nahuel FouilleulNahuel Fouilleul
2,925211
2,925211
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
4 hours ago
add a comment |
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
4 hours ago
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
4 hours ago
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
4 hours ago
add a comment |
$begingroup$
Brachylog, 5 bytes
ḷṇ₁hᵛ
Try it online!
The input
ḷ lowercased
ṇ₁ and split on spaces
hᵛ is a list of elements which all start with the same thing.
$endgroup$
$begingroup$
I just now noticed that this has to be able to handle punctuation, but without any punctuated test cases I can't tell if this does or doesn't still work...
$endgroup$
– Unrelated String
4 hours ago
add a comment |
$begingroup$
Brachylog, 5 bytes
ḷṇ₁hᵛ
Try it online!
The input
ḷ lowercased
ṇ₁ and split on spaces
hᵛ is a list of elements which all start with the same thing.
$endgroup$
$begingroup$
I just now noticed that this has to be able to handle punctuation, but without any punctuated test cases I can't tell if this does or doesn't still work...
$endgroup$
– Unrelated String
4 hours ago
add a comment |
$begingroup$
Brachylog, 5 bytes
ḷṇ₁hᵛ
Try it online!
The input
ḷ lowercased
ṇ₁ and split on spaces
hᵛ is a list of elements which all start with the same thing.
$endgroup$
Brachylog, 5 bytes
ḷṇ₁hᵛ
Try it online!
The input
ḷ lowercased
ṇ₁ and split on spaces
hᵛ is a list of elements which all start with the same thing.
answered 4 hours ago
Unrelated StringUnrelated String
1,331211
1,331211
$begingroup$
I just now noticed that this has to be able to handle punctuation, but without any punctuated test cases I can't tell if this does or doesn't still work...
$endgroup$
– Unrelated String
4 hours ago
add a comment |
$begingroup$
I just now noticed that this has to be able to handle punctuation, but without any punctuated test cases I can't tell if this does or doesn't still work...
$endgroup$
– Unrelated String
4 hours ago
$begingroup$
I just now noticed that this has to be able to handle punctuation, but without any punctuated test cases I can't tell if this does or doesn't still work...
$endgroup$
– Unrelated String
4 hours ago
$begingroup$
I just now noticed that this has to be able to handle punctuation, but without any punctuated test cases I can't tell if this does or doesn't still work...
$endgroup$
– Unrelated String
4 hours ago
add a comment |
1
$begingroup$
Is it intended as a
tips
question limited toPython
? If so, these both tags should be added.$endgroup$
– Arnauld
7 hours ago
2
$begingroup$
Heya friend! This site is usually reserved for explicitly defined problems. Things like "can the input contain punctuation" should be answered before posting, but other than that this is a great first question comparatively to the other new-user questions we usually see. Judging by your examples I'd just clarify that the only characters in the input will be "[A-Za-z ]" and your question will be purely objective. I'd scope out some other questions around here, else this may honestly be a better fit on overflow.
$endgroup$
– Magic Octopus Urn
7 hours ago
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
6 hours ago
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
6 hours ago
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
6 hours ago