how to compare item with all other items using forEach in Kotlin?
I need for a given list of words to determine whether it contains anagrams.
For example:
hasAnagrams(listOf("restful", "elvis", "fluster")) -> true
hasAnagrams(listOf("restful", "elvis", "real")) -> false
My code:
fun hasAnagrams(words: List<String>): Boolean =
words.map { it.split(" ") }.forEach { item -> return item.containsAll(item) }
My code returns a unit and I do not know how to return a boolean, making the code short, concise and idiomatically correct. Also, I do not know whether it is worth using .forEach
or there is a more correct method for this action. And did I write this line correctly item -> return item.containsAll(item)
?
kotlin
add a comment |
I need for a given list of words to determine whether it contains anagrams.
For example:
hasAnagrams(listOf("restful", "elvis", "fluster")) -> true
hasAnagrams(listOf("restful", "elvis", "real")) -> false
My code:
fun hasAnagrams(words: List<String>): Boolean =
words.map { it.split(" ") }.forEach { item -> return item.containsAll(item) }
My code returns a unit and I do not know how to return a boolean, making the code short, concise and idiomatically correct. Also, I do not know whether it is worth using .forEach
or there is a more correct method for this action. And did I write this line correctly item -> return item.containsAll(item)
?
kotlin
add a comment |
I need for a given list of words to determine whether it contains anagrams.
For example:
hasAnagrams(listOf("restful", "elvis", "fluster")) -> true
hasAnagrams(listOf("restful", "elvis", "real")) -> false
My code:
fun hasAnagrams(words: List<String>): Boolean =
words.map { it.split(" ") }.forEach { item -> return item.containsAll(item) }
My code returns a unit and I do not know how to return a boolean, making the code short, concise and idiomatically correct. Also, I do not know whether it is worth using .forEach
or there is a more correct method for this action. And did I write this line correctly item -> return item.containsAll(item)
?
kotlin
I need for a given list of words to determine whether it contains anagrams.
For example:
hasAnagrams(listOf("restful", "elvis", "fluster")) -> true
hasAnagrams(listOf("restful", "elvis", "real")) -> false
My code:
fun hasAnagrams(words: List<String>): Boolean =
words.map { it.split(" ") }.forEach { item -> return item.containsAll(item) }
My code returns a unit and I do not know how to return a boolean, making the code short, concise and idiomatically correct. Also, I do not know whether it is worth using .forEach
or there is a more correct method for this action. And did I write this line correctly item -> return item.containsAll(item)
?
kotlin
kotlin
asked Jan 19 at 18:35
A.RostA.Rost
615
615
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
In words.map you split each of given sentence into list of words and then, for each of this list, you check if all elements in this list is in this list, which is always true.
There is no sense in using foreach in this example. It returns Unit, which sth like void in java.
Maybe you wanted sth like this?
fun hasAnagrams(words: List<String>): Boolean = words
.map { it.split("").sorted() } // split given words into list of chars and sort
.distinct() // get only unique lists
.size != words.size // check if number of unique lists is equal to number of words in input list
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54270178%2fhow-to-compare-item-with-all-other-items-using-foreach-in-kotlin%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
In words.map you split each of given sentence into list of words and then, for each of this list, you check if all elements in this list is in this list, which is always true.
There is no sense in using foreach in this example. It returns Unit, which sth like void in java.
Maybe you wanted sth like this?
fun hasAnagrams(words: List<String>): Boolean = words
.map { it.split("").sorted() } // split given words into list of chars and sort
.distinct() // get only unique lists
.size != words.size // check if number of unique lists is equal to number of words in input list
add a comment |
In words.map you split each of given sentence into list of words and then, for each of this list, you check if all elements in this list is in this list, which is always true.
There is no sense in using foreach in this example. It returns Unit, which sth like void in java.
Maybe you wanted sth like this?
fun hasAnagrams(words: List<String>): Boolean = words
.map { it.split("").sorted() } // split given words into list of chars and sort
.distinct() // get only unique lists
.size != words.size // check if number of unique lists is equal to number of words in input list
add a comment |
In words.map you split each of given sentence into list of words and then, for each of this list, you check if all elements in this list is in this list, which is always true.
There is no sense in using foreach in this example. It returns Unit, which sth like void in java.
Maybe you wanted sth like this?
fun hasAnagrams(words: List<String>): Boolean = words
.map { it.split("").sorted() } // split given words into list of chars and sort
.distinct() // get only unique lists
.size != words.size // check if number of unique lists is equal to number of words in input list
In words.map you split each of given sentence into list of words and then, for each of this list, you check if all elements in this list is in this list, which is always true.
There is no sense in using foreach in this example. It returns Unit, which sth like void in java.
Maybe you wanted sth like this?
fun hasAnagrams(words: List<String>): Boolean = words
.map { it.split("").sorted() } // split given words into list of chars and sort
.distinct() // get only unique lists
.size != words.size // check if number of unique lists is equal to number of words in input list
answered Jan 19 at 19:03
sawimsawim
175111
175111
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54270178%2fhow-to-compare-item-with-all-other-items-using-foreach-in-kotlin%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown