Is there a smaller tautogram checker? [closed] Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar Manara The PPCG Site design is on its way - help us make it awesome! Sandbox for Proposed ChallengesTransposed, primes, oh my!Rosetta Stone Challenge: Gene Mapping“Convenient palindrome” checkerPrelude Syntax-CheckerRecreate the sentenceHuman Friendly Filename DetectionAre the lists divisible?VEVO User Account CheckerIsogram checkerCheckers Checker
Retract an already submitted Recommendation Letter (written for an undergrad student)
Page Layouts : 1 column , 2 columns-left , 2 columns-right , 3 column
How long can a nation maintain a technological edge over the rest of the world?
Why does the Cisco show run command not show the full version, while the show version command does?
Philosophers who were composers?
Getting AggregateResult variables from Execute Anonymous Window
Suing a Police Officer Instead of the Police Department
Why does Java have support for time zone offsets with seconds precision?
Does a Draconic Bloodline sorcerer's doubled proficiency bonus for Charisma checks against dragons apply to all dragon types or only the chosen one?
My admission is revoked after accepting the admission offer
What is a 'Key' in computer science?
Why isn't everyone flabbergasted about Bran's "gift"?
Marquee sign letters
Array Dynamic resize in heap
false 'Security alert' from Google - every login generates mails from 'no-reply@accounts.google.com'
Determinant of a matrix with 2 equal rows
When I export an AI 300x60 art board it saves with bigger dimensions
So I pre ordered a game on my friends home screen but on my Xbox, does that mean I don't get the game and I lost 60$?
Where did Arya get these scars?
What's the difference between using dependency injection with a container and using a service locator?
What to do with someone that cheated their way though university and a PhD program?
RIP Packet Format
Will I be more secure with my own router behind my ISP's router?
"Working on a knee"
Is there a smaller tautogram checker? [closed]
Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar Manara
The PPCG Site design is on its way - help us make it awesome!
Sandbox for Proposed ChallengesTransposed, primes, oh my!Rosetta Stone Challenge: Gene Mapping“Convenient palindrome” checkerPrelude Syntax-CheckerRecreate the sentenceHuman Friendly Filename DetectionAre the lists divisible?VEVO User Account CheckerIsogram checkerCheckers Checker
$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
$endgroup$
closed as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan Mar 25 at 22:26
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 10 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
$endgroup$
closed as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan Mar 25 at 22:26
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
Mar 25 at 19:26
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
Mar 25 at 19:27
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
Mar 25 at 19:35
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
Mar 25 at 19:45
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
Mar 25 at 20:10
|
show 10 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
$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
edited Mar 25 at 21:30
trichoplax
7,55164376
7,55164376
asked Mar 25 at 19:23
Jaime TenorioJaime Tenorio
514
514
closed as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan Mar 25 at 22:26
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.
closed as unclear what you're asking by Erik the Outgolfer, Stephen, Embodiment of Ignorance, Don Thousand, Jonathan Allan Mar 25 at 22:26
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
Mar 25 at 19:26
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
Mar 25 at 19:27
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
Mar 25 at 19:35
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
Mar 25 at 19:45
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
Mar 25 at 20:10
|
show 10 more comments
1
$begingroup$
Is it intended as atips
question limited toPython
? If so, these both tags should be added.
$endgroup$
– Arnauld
Mar 25 at 19:26
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
Mar 25 at 19:27
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
Mar 25 at 19:35
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
Mar 25 at 19:45
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
Mar 25 at 20:10
1
1
$begingroup$
Is it intended as a
tips
question limited to Python
? If so, these both tags should be added.$endgroup$
– Arnauld
Mar 25 at 19:26
$begingroup$
Is it intended as a
tips
question limited to Python
? If so, these both tags should be added.$endgroup$
– Arnauld
Mar 25 at 19:26
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
Mar 25 at 19:27
$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
Mar 25 at 19:27
1
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
Mar 25 at 19:35
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
Mar 25 at 19:35
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
Mar 25 at 19:45
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
Mar 25 at 19:45
6
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
Mar 25 at 20:10
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
Mar 25 at 20:10
|
show 10 more comments
13 Answers
13
active
oldest
votes
$begingroup$
05AB1E, 5 bytes
l#€нË
Try it online!
l # Lowercase input.
# # Split on spaces.
€н # a[0] of each.
Ë # All equal?
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$
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$
$begingroup$
Here's my Racket solution:(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:18
$begingroup$
Much shorter in PicoLisp:(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:47
add a comment |
$begingroup$
PowerShell, 57 50 41 bytes
(-split$args|% s*g 0 1|sort -u).count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, and grabs the first letter by taking the s
ubstring
starting at position 0
and going for 1
character. Then sort
s the letters (case-insensitive by default) with the -u
nique flag to pull out only one copy of each letter, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
-9 bytes thanks to mazzy.
$endgroup$
$begingroup$
41 bytes
$endgroup$
– mazzy
Mar 26 at 5:43
$begingroup$
35 bytes with regexp
$endgroup$
– mazzy
Mar 26 at 8:01
1
$begingroup$
@mazzy fixed trying to understand the intention
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:36
$begingroup$
@mazzy I'll let you post the regex version when the question is reopened. It's different enough to warrant its own answer.
$endgroup$
– AdmBorkBork
Mar 26 at 12:29
$begingroup$
I'm agree. but this question is put on hold, so I can't create a new answer.
$endgroup$
– mazzy
Mar 26 at 15:27
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$
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
Mar 25 at 22:13
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
Mar 25 at 23:15
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
following comments in case bad punctuation (31 bytes)
$_=!/^W*+(.).*(?=bw)(?!1)/i
31 bytes
otherwise there's another approach, also with 31 bytes:
$hord()%32++for/w+/g;$_=2>%h
31 bytes other
$endgroup$
$begingroup$
what about punctuations? what about spaces or punctuations at the strart of string?
$endgroup$
– mazzy
Mar 26 at 7:49
$begingroup$
this answer works for the given test cases, could be improved depending the requirements could be$_=!/^W*+(.).*(?=bw)(?!1)/i
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:06
$begingroup$
but reading carefuly the question and the given solution, spaces at beginning can't occur because the spaces are used by the shell to split the arguments. The program checks only that all arguments start with the same character
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:14
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
Mar 25 at 20:35
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
Mar 25 at 20:45
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
Mar 25 at 20:55
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
Mar 25 at 21:08
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$
1
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
Mar 25 at 22:13
$begingroup$
indeed it's not a test case, but this can be handled adding(?> *)
, using atomic group to match space at beginning and to pevent bactracking. just ` *` doesn't work because after failing matches will backtrack ` *` to match empty string
$endgroup$
– Nahuel Fouilleul
Mar 26 at 6:32
$begingroup$
however reading the question again spaces can occur at the beginning beause in the example the usage is to pass the words as argument and spaces are shell argument delimiter
$endgroup$
– Nahuel Fouilleul
Mar 26 at 10:19
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!
l # Lowercase input.
# # Split on spaces.
€н # a[0] of each.
Ë # All equal?
Did this on mobile excuse the no explanation.
$endgroup$
add a comment |
$begingroup$
05AB1E, 5 bytes
l#€нË
Try it online!
l # Lowercase input.
# # Split on spaces.
€н # a[0] of each.
Ë # All equal?
Did this on mobile excuse the no explanation.
$endgroup$
add a comment |
$begingroup$
05AB1E, 5 bytes
l#€нË
Try it online!
l # Lowercase input.
# # Split on spaces.
€н # a[0] of each.
Ë # All equal?
Did this on mobile excuse the no explanation.
$endgroup$
05AB1E, 5 bytes
l#€нË
Try it online!
l # Lowercase input.
# # Split on spaces.
€н # a[0] of each.
Ë # All equal?
Did this on mobile excuse the no explanation.
edited Mar 26 at 13:27
Jo King
27.4k365133
27.4k365133
answered Mar 25 at 20:18
Magic Octopus UrnMagic Octopus Urn
13k444126
13k444126
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 Mar 25 at 19:59
TFeldTFeld
16.6k21451
16.6k21451
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$
$begingroup$
Here's my Racket solution:(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:18
$begingroup$
Much shorter in PicoLisp:(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:47
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$
$begingroup$
Here's my Racket solution:(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:18
$begingroup$
Much shorter in PicoLisp:(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:47
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 Mar 25 at 22:19
answered Mar 25 at 22:12
CarcigenicateCarcigenicate
2,34911224
2,34911224
$begingroup$
Here's my Racket solution:(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:18
$begingroup$
Much shorter in PicoLisp:(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:47
add a comment |
$begingroup$
Here's my Racket solution:(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:18
$begingroup$
Much shorter in PicoLisp:(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:47
$begingroup$
Here's my Racket solution:
(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:18
$begingroup$
Here's my Racket solution:
(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:18
$begingroup$
Much shorter in PicoLisp:
(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:47
$begingroup$
Much shorter in PicoLisp:
(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
$endgroup$
– Galen Ivanov
Mar 26 at 7:47
add a comment |
$begingroup$
PowerShell, 57 50 41 bytes
(-split$args|% s*g 0 1|sort -u).count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, and grabs the first letter by taking the s
ubstring
starting at position 0
and going for 1
character. Then sort
s the letters (case-insensitive by default) with the -u
nique flag to pull out only one copy of each letter, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
-9 bytes thanks to mazzy.
$endgroup$
$begingroup$
41 bytes
$endgroup$
– mazzy
Mar 26 at 5:43
$begingroup$
35 bytes with regexp
$endgroup$
– mazzy
Mar 26 at 8:01
1
$begingroup$
@mazzy fixed trying to understand the intention
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:36
$begingroup$
@mazzy I'll let you post the regex version when the question is reopened. It's different enough to warrant its own answer.
$endgroup$
– AdmBorkBork
Mar 26 at 12:29
$begingroup$
I'm agree. but this question is put on hold, so I can't create a new answer.
$endgroup$
– mazzy
Mar 26 at 15:27
add a comment |
$begingroup$
PowerShell, 57 50 41 bytes
(-split$args|% s*g 0 1|sort -u).count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, and grabs the first letter by taking the s
ubstring
starting at position 0
and going for 1
character. Then sort
s the letters (case-insensitive by default) with the -u
nique flag to pull out only one copy of each letter, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
-9 bytes thanks to mazzy.
$endgroup$
$begingroup$
41 bytes
$endgroup$
– mazzy
Mar 26 at 5:43
$begingroup$
35 bytes with regexp
$endgroup$
– mazzy
Mar 26 at 8:01
1
$begingroup$
@mazzy fixed trying to understand the intention
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:36
$begingroup$
@mazzy I'll let you post the regex version when the question is reopened. It's different enough to warrant its own answer.
$endgroup$
– AdmBorkBork
Mar 26 at 12:29
$begingroup$
I'm agree. but this question is put on hold, so I can't create a new answer.
$endgroup$
– mazzy
Mar 26 at 15:27
add a comment |
$begingroup$
PowerShell, 57 50 41 bytes
(-split$args|% s*g 0 1|sort -u).count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, and grabs the first letter by taking the s
ubstring
starting at position 0
and going for 1
character. Then sort
s the letters (case-insensitive by default) with the -u
nique flag to pull out only one copy of each letter, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
-9 bytes thanks to mazzy.
$endgroup$
PowerShell, 57 50 41 bytes
(-split$args|% s*g 0 1|sort -u).count-eq1
Try it online!
Takes input and split
s it on whitespace. Loops through each word, and grabs the first letter by taking the s
ubstring
starting at position 0
and going for 1
character. Then sort
s the letters (case-insensitive by default) with the -u
nique flag to pull out only one copy of each letter, and verifies the count
of those names are -eq
ual to 1
. Output is implicit.
-9 bytes thanks to mazzy.
edited Mar 26 at 12:29
answered Mar 25 at 20:05
AdmBorkBorkAdmBorkBork
28.1k468241
28.1k468241
$begingroup$
41 bytes
$endgroup$
– mazzy
Mar 26 at 5:43
$begingroup$
35 bytes with regexp
$endgroup$
– mazzy
Mar 26 at 8:01
1
$begingroup$
@mazzy fixed trying to understand the intention
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:36
$begingroup$
@mazzy I'll let you post the regex version when the question is reopened. It's different enough to warrant its own answer.
$endgroup$
– AdmBorkBork
Mar 26 at 12:29
$begingroup$
I'm agree. but this question is put on hold, so I can't create a new answer.
$endgroup$
– mazzy
Mar 26 at 15:27
add a comment |
$begingroup$
41 bytes
$endgroup$
– mazzy
Mar 26 at 5:43
$begingroup$
35 bytes with regexp
$endgroup$
– mazzy
Mar 26 at 8:01
1
$begingroup$
@mazzy fixed trying to understand the intention
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:36
$begingroup$
@mazzy I'll let you post the regex version when the question is reopened. It's different enough to warrant its own answer.
$endgroup$
– AdmBorkBork
Mar 26 at 12:29
$begingroup$
I'm agree. but this question is put on hold, so I can't create a new answer.
$endgroup$
– mazzy
Mar 26 at 15:27
$begingroup$
41 bytes
$endgroup$
– mazzy
Mar 26 at 5:43
$begingroup$
41 bytes
$endgroup$
– mazzy
Mar 26 at 5:43
$begingroup$
35 bytes with regexp
$endgroup$
– mazzy
Mar 26 at 8:01
$begingroup$
35 bytes with regexp
$endgroup$
– mazzy
Mar 26 at 8:01
1
1
$begingroup$
@mazzy fixed trying to understand the intention
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:36
$begingroup$
@mazzy fixed trying to understand the intention
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:36
$begingroup$
@mazzy I'll let you post the regex version when the question is reopened. It's different enough to warrant its own answer.
$endgroup$
– AdmBorkBork
Mar 26 at 12:29
$begingroup$
@mazzy I'll let you post the regex version when the question is reopened. It's different enough to warrant its own answer.
$endgroup$
– AdmBorkBork
Mar 26 at 12:29
$begingroup$
I'm agree. but this question is put on hold, so I can't create a new answer.
$endgroup$
– mazzy
Mar 26 at 15:27
$begingroup$
I'm agree. but this question is put on hold, so I can't create a new answer.
$endgroup$
– mazzy
Mar 26 at 15:27
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 Mar 25 at 20:24
RileyRiley
11k11448
11k11448
add a comment |
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
Mar 25 at 22:13
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
Mar 25 at 22:13
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 Mar 25 at 22:10
Unrelated StringUnrelated String
1,741312
1,741312
$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
Mar 25 at 22:13
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
Mar 25 at 22:13
$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
Mar 25 at 22:13
$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
Mar 25 at 22:13
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
Mar 25 at 23:15
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
Mar 25 at 23:15
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 Mar 25 at 23:15
answered Mar 25 at 20:11
Jonathan FrechJonathan Frech
6,50311040
6,50311040
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
Mar 25 at 23:15
add a comment |
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
Mar 25 at 23:15
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
Mar 25 at 23:15
$begingroup$
@nimi Thank you.
$endgroup$
– Jonathan Frech
Mar 25 at 23:15
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
following comments in case bad punctuation (31 bytes)
$_=!/^W*+(.).*(?=bw)(?!1)/i
31 bytes
otherwise there's another approach, also with 31 bytes:
$hord()%32++for/w+/g;$_=2>%h
31 bytes other
$endgroup$
$begingroup$
what about punctuations? what about spaces or punctuations at the strart of string?
$endgroup$
– mazzy
Mar 26 at 7:49
$begingroup$
this answer works for the given test cases, could be improved depending the requirements could be$_=!/^W*+(.).*(?=bw)(?!1)/i
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:06
$begingroup$
but reading carefuly the question and the given solution, spaces at beginning can't occur because the spaces are used by the shell to split the arguments. The program checks only that all arguments start with the same character
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:14
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
following comments in case bad punctuation (31 bytes)
$_=!/^W*+(.).*(?=bw)(?!1)/i
31 bytes
otherwise there's another approach, also with 31 bytes:
$hord()%32++for/w+/g;$_=2>%h
31 bytes other
$endgroup$
$begingroup$
what about punctuations? what about spaces or punctuations at the strart of string?
$endgroup$
– mazzy
Mar 26 at 7:49
$begingroup$
this answer works for the given test cases, could be improved depending the requirements could be$_=!/^W*+(.).*(?=bw)(?!1)/i
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:06
$begingroup$
but reading carefuly the question and the given solution, spaces at beginning can't occur because the spaces are used by the shell to split the arguments. The program checks only that all arguments start with the same character
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:14
add a comment |
$begingroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
following comments in case bad punctuation (31 bytes)
$_=!/^W*+(.).*(?=bw)(?!1)/i
31 bytes
otherwise there's another approach, also with 31 bytes:
$hord()%32++for/w+/g;$_=2>%h
31 bytes other
$endgroup$
Perl 5 (-p
), 20 bytes
$_=!/^(.).* (?!1)/i
TIO
following comments in case bad punctuation (31 bytes)
$_=!/^W*+(.).*(?=bw)(?!1)/i
31 bytes
otherwise there's another approach, also with 31 bytes:
$hord()%32++for/w+/g;$_=2>%h
31 bytes other
edited Mar 26 at 10:31
answered Mar 25 at 20:28
Nahuel FouilleulNahuel Fouilleul
3,035211
3,035211
$begingroup$
what about punctuations? what about spaces or punctuations at the strart of string?
$endgroup$
– mazzy
Mar 26 at 7:49
$begingroup$
this answer works for the given test cases, could be improved depending the requirements could be$_=!/^W*+(.).*(?=bw)(?!1)/i
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:06
$begingroup$
but reading carefuly the question and the given solution, spaces at beginning can't occur because the spaces are used by the shell to split the arguments. The program checks only that all arguments start with the same character
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:14
add a comment |
$begingroup$
what about punctuations? what about spaces or punctuations at the strart of string?
$endgroup$
– mazzy
Mar 26 at 7:49
$begingroup$
this answer works for the given test cases, could be improved depending the requirements could be$_=!/^W*+(.).*(?=bw)(?!1)/i
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:06
$begingroup$
but reading carefuly the question and the given solution, spaces at beginning can't occur because the spaces are used by the shell to split the arguments. The program checks only that all arguments start with the same character
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:14
$begingroup$
what about punctuations? what about spaces or punctuations at the strart of string?
$endgroup$
– mazzy
Mar 26 at 7:49
$begingroup$
what about punctuations? what about spaces or punctuations at the strart of string?
$endgroup$
– mazzy
Mar 26 at 7:49
$begingroup$
this answer works for the given test cases, could be improved depending the requirements could be
$_=!/^W*+(.).*(?=bw)(?!1)/i
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:06
$begingroup$
this answer works for the given test cases, could be improved depending the requirements could be
$_=!/^W*+(.).*(?=bw)(?!1)/i
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:06
$begingroup$
but reading carefuly the question and the given solution, spaces at beginning can't occur because the spaces are used by the shell to split the arguments. The program checks only that all arguments start with the same character
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:14
$begingroup$
but reading carefuly the question and the given solution, spaces at beginning can't occur because the spaces are used by the shell to split the arguments. The program checks only that all arguments start with the same character
$endgroup$
– Nahuel Fouilleul
Mar 26 at 8:14
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
Mar 25 at 20:35
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
Mar 25 at 20:45
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
Mar 25 at 20:55
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
Mar 25 at 21:08
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
Mar 25 at 20:35
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
Mar 25 at 20:45
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
Mar 25 at 20:55
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
Mar 25 at 21:08
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 Mar 25 at 20:05
ArnauldArnauld
81.9k798337
81.9k798337
$begingroup$
or in one regex or with a space instead ofW
$endgroup$
– Nahuel Fouilleul
Mar 25 at 20:35
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
Mar 25 at 20:45
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
Mar 25 at 20:55
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
Mar 25 at 21:08
add a comment |
$begingroup$
or in one regex or with a space instead ofW
$endgroup$
– Nahuel Fouilleul
Mar 25 at 20:35
$begingroup$
@NahuelFouilleul, usingtest
saves another byte.
$endgroup$
– Shaggy
Mar 25 at 20:45
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
Mar 25 at 20:55
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
Mar 25 at 21:08
$begingroup$
or in one regex or with a space instead of
W
$endgroup$
– Nahuel Fouilleul
Mar 25 at 20:35
$begingroup$
or in one regex or with a space instead of
W
$endgroup$
– Nahuel Fouilleul
Mar 25 at 20:35
$begingroup$
@NahuelFouilleul, using
test
saves another byte.$endgroup$
– Shaggy
Mar 25 at 20:45
$begingroup$
@NahuelFouilleul, using
test
saves another byte.$endgroup$
– Shaggy
Mar 25 at 20:45
1
1
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
Mar 25 at 20:55
$begingroup$
@NahuelFouilleul You should probably post is separately.
$endgroup$
– Arnauld
Mar 25 at 20:55
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
Mar 25 at 21:08
$begingroup$
already posted the perl version, i don't master as well javascript, i'm happy to give you a hint
$endgroup$
– Nahuel Fouilleul
Mar 25 at 21:08
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 Mar 25 at 20:08
ShaggyShaggy
19.2k21768
19.2k21768
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 Mar 25 at 20:14
Embodiment of IgnoranceEmbodiment of Ignorance
3,084127
3,084127
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 Mar 25 at 21:28
nwellnhofnwellnhof
7,56011128
7,56011128
add a comment |
add a comment |
$begingroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
$endgroup$
1
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
Mar 25 at 22:13
$begingroup$
indeed it's not a test case, but this can be handled adding(?> *)
, using atomic group to match space at beginning and to pevent bactracking. just ` *` doesn't work because after failing matches will backtrack ` *` to match empty string
$endgroup$
– Nahuel Fouilleul
Mar 26 at 6:32
$begingroup$
however reading the question again spaces can occur at the beginning beause in the example the usage is to pass the words as argument and spaces are shell argument delimiter
$endgroup$
– Nahuel Fouilleul
Mar 26 at 10:19
add a comment |
$begingroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
$endgroup$
1
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
Mar 25 at 22:13
$begingroup$
indeed it's not a test case, but this can be handled adding(?> *)
, using atomic group to match space at beginning and to pevent bactracking. just ` *` doesn't work because after failing matches will backtrack ` *` to match empty string
$endgroup$
– Nahuel Fouilleul
Mar 26 at 6:32
$begingroup$
however reading the question again spaces can occur at the beginning beause in the example the usage is to pass the words as argument and spaces are shell argument delimiter
$endgroup$
– Nahuel Fouilleul
Mar 26 at 10:19
add a comment |
$begingroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
$endgroup$
Java, (36 bytes)
s->!s.matches("(?i)(.).* (?!\1).*")
TIO
answered Mar 25 at 21:30
Nahuel FouilleulNahuel Fouilleul
3,035211
3,035211
1
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
Mar 25 at 22:13
$begingroup$
indeed it's not a test case, but this can be handled adding(?> *)
, using atomic group to match space at beginning and to pevent bactracking. just ` *` doesn't work because after failing matches will backtrack ` *` to match empty string
$endgroup$
– Nahuel Fouilleul
Mar 26 at 6:32
$begingroup$
however reading the question again spaces can occur at the beginning beause in the example the usage is to pass the words as argument and spaces are shell argument delimiter
$endgroup$
– Nahuel Fouilleul
Mar 26 at 10:19
add a comment |
1
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
Mar 25 at 22:13
$begingroup$
indeed it's not a test case, but this can be handled adding(?> *)
, using atomic group to match space at beginning and to pevent bactracking. just ` *` doesn't work because after failing matches will backtrack ` *` to match empty string
$endgroup$
– Nahuel Fouilleul
Mar 26 at 6:32
$begingroup$
however reading the question again spaces can occur at the beginning beause in the example the usage is to pass the words as argument and spaces are shell argument delimiter
$endgroup$
– Nahuel Fouilleul
Mar 26 at 10:19
1
1
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
Mar 25 at 22:13
$begingroup$
I think the input is allowed to start with a space, and this doesn't work for input like that.
$endgroup$
– Sara J
Mar 25 at 22:13
$begingroup$
indeed it's not a test case, but this can be handled adding
(?> *)
, using atomic group to match space at beginning and to pevent bactracking. just ` *` doesn't work because after failing matches will backtrack ` *` to match empty string$endgroup$
– Nahuel Fouilleul
Mar 26 at 6:32
$begingroup$
indeed it's not a test case, but this can be handled adding
(?> *)
, using atomic group to match space at beginning and to pevent bactracking. just ` *` doesn't work because after failing matches will backtrack ` *` to match empty string$endgroup$
– Nahuel Fouilleul
Mar 26 at 6:32
$begingroup$
however reading the question again spaces can occur at the beginning beause in the example the usage is to pass the words as argument and spaces are shell argument delimiter
$endgroup$
– Nahuel Fouilleul
Mar 26 at 10:19
$begingroup$
however reading the question again spaces can occur at the beginning beause in the example the usage is to pass the words as argument and spaces are shell argument delimiter
$endgroup$
– Nahuel Fouilleul
Mar 26 at 10:19
add a comment |
1
$begingroup$
Is it intended as a
tips
question limited toPython
? If so, these both tags should be added.$endgroup$
– Arnauld
Mar 25 at 19:26
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
Mar 25 at 19:27
1
$begingroup$
What do you mean by punctuation? Which characters are included?
$endgroup$
– Embodiment of Ignorance
Mar 25 at 19:35
1
$begingroup$
@MagicOctopusUrn Sometimes when you ask for a short solution in stackOverflow the refer to this site :)
$endgroup$
– Luis felipe De jesus Munoz
Mar 25 at 19:45
6
$begingroup$
Welcome to PPCG! A few more test cases (including punctuation) would be a great addition to this challenge.
$endgroup$
– AdmBorkBork
Mar 25 at 20:10