Find words which contains more than 3 e vowels: Difference between revisions

m
syntax highlighting fixup automation
(J)
m (syntax highlighting fixup automation)
Line 15:
{{trans|Python}}
 
<langsyntaxhighlight lang="11l">V aiou = ‘aiou’ // to get round ‘bug in MSVC 2017’[https://developercommunity.visualstudio.com/t/bug-with-operator-in-c/565417]
 
L(word) File(‘unixdict.txt’).read().split("\n")
I !any(word.map(c -> c C :aiou)) & sum(word.map(c -> Int(c == ‘e’))) > 3
print(word)</langsyntaxhighlight>
 
{{out}}
Line 42:
 
=={{header|8080 Assembly}}==
<langsyntaxhighlight lang="8080asm">puts: equ 9 ; CP/M syscall to print a string
fopen: equ 15 ; Open file
fread: equ 20 ; Read block
Line 105:
jmp 5
emsg: db 'Error$'
word: equ $</langsyntaxhighlight>
 
{{out}}
Line 130:
=={{header|Action!}}==
In the following solution the input file [https://gitlab.com/amarok8bit/action-rosetta-code/-/blob/master/source/unixdict.txt unixdict.txt] is loaded from H6 drive. Altirra emulator automatically converts CR/LF character from ASCII into 155 character in ATASCII charset used by Atari 8-bit computer when one from H6-H10 hard drive under DOS 2.5 is used.
<langsyntaxhighlight Actionlang="action!">BYTE FUNC Count(CHAR ARRAY text CHAR c)
BYTE i,n
 
Line 171:
 
FindWords(fname)
RETURN</langsyntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Find_words_which_contains_more_than_3_e_vowels.png Screenshot from Atari 8-bit computer]
Line 180:
 
=={{header|Ada}}==
<langsyntaxhighlight Adalang="ada">with Ada.Text_Io;
with Ada.Strings.Maps;
with Ada.Strings.Fixed;
Line 210:
end loop;
Close (File);
end Find_Three_E;</langsyntaxhighlight>
 
=={{header|ALGOL 68}}==
Interesting to note the word with the most es is "dereference" - a term first used (I believe) in Algol 68...
<langsyntaxhighlight lang="algol68"># find words that contain more than 3 es and no other vowels #
 
# read the list of words and look for suitable words #
Line 259:
OD;
close( input file )
FI</langsyntaxhighlight>
{{out}}
<pre>
Line 282:
=={{header|Arturo}}==
 
<langsyntaxhighlight lang="rebol">words: read.lines relative "unixdict.txt"
otherVowels: ["a" "i" "o" "u"]
containsMoreThan3Es?: function [w][
Line 296:
if containsMoreThan3Es? word ->
print word
]</langsyntaxhighlight>
 
{{out}}
Line 318:
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight AutoHotkeylang="autohotkey">FileRead, db, % A_Desktop "\unixdict.txt"
vowelsLessE := ["a", "i", "o", "u"]
oRes := []
Line 334:
result .= word "`n"
}
MsgBox, 262144, , % result</langsyntaxhighlight>
{{out}}
<pre>belvedere
Line 354:
 
=={{header|AWK}}==
<langsyntaxhighlight AWKlang="awk">/e.*e.*e.*e/ && !/a|i|o|u/ {print}</langsyntaxhighlight>
 
{{out}}
Line 378:
 
=={{header|BCPL}}==
<langsyntaxhighlight lang="bcpl">get "libhdr"
 
let reads(v) = valof
Line 404:
while reads(word) if testword(word) do writef("%S*N",word)
endread()
$)</langsyntaxhighlight>
{{out}}
<pre>belvedere
Line 424:
 
=={{header|C}}==
<langsyntaxhighlight lang="c">#include <stdio.h>
#define SIZE 256
 
Line 458:
fclose(f);
return 0;
}</langsyntaxhighlight>
 
{{out}}
Line 480:
 
=={{header|C++}}==
<langsyntaxhighlight lang="cpp">#include <iostream>
#include <fstream>
 
Line 510:
return 0;
}</langsyntaxhighlight>
 
{{out}}
Line 532:
 
=={{header|CLU}}==
<langsyntaxhighlight lang="clu">e_word = proc (s: string) returns (bool)
e: int := 0
for c: char in string$chars(s) do
Line 554:
end
stream$close(dict)
end start_up</langsyntaxhighlight>
{{out}}
<pre>belvedere
Line 574:
 
=={{header|COBOL}}==
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. E-WORDS.
Line 611:
INSPECT WORD TALLYING OTHER FOR ALL 'u'.
IF E IS GREATER THAN 3 AND OTHER IS EQUAL TO ZERO,
DISPLAY WORD.</langsyntaxhighlight>
{{out}}
<pre>belvedere
Line 631:
 
=={{header|Cowgol}}==
<langsyntaxhighlight lang="cowgol">include "cowgol.coh";
include "file.coh";
 
Line 679:
end if;
 
ForEachLine(&file, CheckWord);</langsyntaxhighlight>
 
{{out}}
Line 702:
 
=={{header|Draco}}==
<langsyntaxhighlight lang="draco">proc eword(*char line) bool:
word e;
char c;
Line 736:
close(dict)
corp</langsyntaxhighlight>
{{out}}
<pre>belvedere
Line 756:
 
=={{header|F_Sharp|F#}}==
<langsyntaxhighlight lang="fsharp">
// Words contains more than 3 e vowels. Nigel Galloway: February 11th., 2021.
let fN g=let n=Map.ofSeq (Seq.countBy id g) in let fN g=not(n.ContainsKey g) in fN 'a' && fN 'i' && fN 'o' && fN 'u' && not(fN 'e') && n.['e']>3
seq{use n=System.IO.File.OpenText("unixdict.txt") in while not n.EndOfStream do yield n.ReadLine()}|>Seq.filter fN|>Seq.iter(printfn "%s")
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 782:
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">USING: formatting io io.encodings.ascii io.files kernel math
sequences ;
 
Line 788:
[ [ "aiou" member? ] any? ] reject
[ [ CHAR: e = ] count 3 > ] filter
[ 1 + "%2d: " printf print ] each-index</langsyntaxhighlight>
{{out}}
<pre>
Line 811:
=={{header|Forth}}==
{{works with|Gforth}}
<langsyntaxhighlight lang="forth">: e3 ( addr u -- ? )
0 { ecount }
0 do
Line 847:
 
main
bye</langsyntaxhighlight>
 
{{out}}
Line 870:
 
=={{header|FreeBASIC}}==
<langsyntaxhighlight lang="freebasic">open "unixdict.txt" for input as #1
 
dim as string s, c
Line 884:
next i
if e>3 then print s
wend</langsyntaxhighlight>
{{out}}<pre>
belvedere
Line 905:
 
=={{header|Frink}}==
<langsyntaxhighlight lang="frink">for word = lines["https://web.archive.org/web/20180611003215if_/http://www.puzzlers.org:80/pub/wordlists/unixdict.txt"]
{
d = countToDict[charList[word]]
if d.get["a",0] == 0 and d.get["e",0] > 3 and d.get["i",0] == 0 and d.get["o",0] == 0 and d.get["u",0] == 0
println[word]
}</langsyntaxhighlight>
{{out}}
<pre>
Line 932:
 
=={{header|Go}}==
<langsyntaxhighlight lang="go">package main
 
import (
Line 976:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 999:
 
=={{header|Haskell}}==
<langsyntaxhighlight lang="haskell">import System.IO
 
main = withFile "unixdict.txt" ReadMode $ \h -> do
Line 1,005:
putStrLn $ unlines $ filter valid words
valid w = not (any (`elem` "aiou") w) && length (filter (=='e') w) > 3</langsyntaxhighlight>
 
{{out}}
Line 1,028:
=={{header|J}}==
 
<langsyntaxhighlight Jlang="j"> >(#~ (0 4 0 0 0 -: 4 <. +/ .(=/)&'aeiou')@>) cutLF fread'unixdict.txt'
belvedere
dereference
Line 1,044:
seventeenth
telemeter
tennessee</langsyntaxhighlight>
 
(Also possible to do this with regular expressions, but this works. Here, we counted how many times each vowel occurred, limited the maximum count to 4, and checked the resulting signature.)
Line 1,053:
 
===Using regular expressions===
<langsyntaxhighlight lang="jq">inputs
| select(test("[aiou]")|not)
| select(test("e.*e.*e.*e"))</langsyntaxhighlight>
===Regex-free solution===
<langsyntaxhighlight lang="jq">def count(s): reduce s as $x (null; .+1);
 
("aiou" | explode) as $disallow
Line 1,066:
count(.[] | select(. == 101)) > 3) # "e" is 101
| $word
</syntaxhighlight>
</lang>
{{out}}
Invocation example: jq -nrR program.jq unixdict.txt
Line 1,090:
=={{header|Julia}}==
See [[Alternade_words#Julia]] for the foreachword function.
<langsyntaxhighlight lang="julia">ecount(word) = count(x -> x == 'e', word)
vowelcount(word) = count(x -> x in ['a', 'e', 'i', 'o', 'u'], word)
onlyevowelsmorethan3(word, _) = begin n, m = vowelcount(word), ecount(word); n == m && m > 3 ? word : "" end
 
foreachword("unixdict.txt", onlyevowelsmorethan3, colwidth=15, numcols=8)
</langsyntaxhighlight>{{out}}
<pre>
belvedere dereference elsewhere erlenmeyer evergreen everywhere exegete freewheel
Line 1,102:
 
=={{header|Ksh}}==
<langsyntaxhighlight lang="ksh">
#!/bin/ksh
 
Line 1,138:
(( $(_countch "$REPLY" "e") >= MINE )) && print $REPLY
done < ${dictionary}
</syntaxhighlight>
</lang>
{{out}}<pre>
belvedere
Line 1,158:
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">vowels = Characters["euioa"];
dict = Once[Import["https://web.archive.org/web/20180611003215/http://www.puzzlers.org/pub/wordlists/unixdict.txt"]];
dict //= StringSplit[#, "\n"] &;
Line 1,164:
dict //= Select[Last /* Count["e"] /* GreaterThan[3]];
dict //= Select[Last /* Apply[SameQ]];
dict[[All, 1]]</langsyntaxhighlight>
{{out}}
<pre>{belvedere, dereference, elsewhere, erlenmeyer, evergreen, everywhere, exegete, freewheel, nevertheless, persevere, preference, referee, seventeen, seventeenth, telemeter, tennessee}</pre>
 
=={{header|Nim}}==
<langsyntaxhighlight Nimlang="nim">import strutils
 
const NonEVowels = ['a', 'i', 'o', 'u']
Line 1,180:
if vowel in word: break checkWord
inc count
stdout.write word.align(14), if count mod 4 == 0: '\n' else: ' '</langsyntaxhighlight>
 
{{out}}
Line 1,190:
=={{header|Pascal}}==
{{works with|Turbo Pascal}}
<langsyntaxhighlight lang="pascal">program EWords;
var
FileVar: Text;
Line 1,217:
end
end
end.</langsyntaxhighlight>
 
{{out}}
Line 1,239:
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">#!/usr/bin/perl
 
use strict; # https://rosettacode.org/wiki/Find_words_which_contains_more_than_3_e_vowels
Line 1,245:
 
@ARGV = 'unixdict.txt';
tr/e// > 3 and tr/aiou// == 0 and print while <>;</langsyntaxhighlight>
{{out}}
belvedere
Line 1,265:
 
=={{header|Phix}}==
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">note</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">word</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">return</span> <span style="color: #7060A8;">find_any</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"aiou"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">word</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">0</span> <span style="color: #008080;">and</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">find_all</span><span style="color: #0000FF;">(</span><span style="color: #008000;">'e'</span><span style="color: #0000FF;">,</span><span style="color: #000000;">word</span><span style="color: #0000FF;">))></span><span style="color: #000000;">3</span> <span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">notes</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">filter</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">unix_dict</span><span style="color: #0000FF;">(),</span><span style="color: #000000;">note</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%d words: %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">notes</span><span style="color: #0000FF;">),</span><span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">shorten</span><span style="color: #0000FF;">(</span><span style="color: #000000;">notes</span><span style="color: #0000FF;">,</span><span style="color: #008000;">""</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">))})</span>
<!--</langsyntaxhighlight>-->
{{out}}
<pre>
Line 1,277:
 
=={{header|PL/I}}==
<langsyntaxhighlight lang="pli">moreThanThreeEs: procedure options(main);
declare dict file;
open file(dict) title('unixdict.txt');
Line 1,298:
close file(dict);
end moreThanThreeEs;</langsyntaxhighlight>
{{out}}
<pre>belvedere
Line 1,318:
 
=={{header|Python}}==
<langsyntaxhighlight lang="python">with open('unixdict.txt', 'rt') as f:
for line in f.readlines():
if not any(c in 'aiou' for c in line) and sum(c=='e' for c in line)>3:
print(line.strip())</langsyntaxhighlight>
 
{{out}}
Line 1,344:
=={{header|R}}==
Adapting this from https://rosettacode.org/wiki/Find_words_which_contains_all_the_vowels#R is trivial.
<langsyntaxhighlight lang="rsplus">dict <- scan("https://web.archive.org/web/20180611003215/http://www.puzzlers.org/pub/wordlists/unixdict.txt", what = character())
#The following line is equivalent to sapply(c("a", "i", "o", "u"), function(x) stringr::str_count(dict, x))
#As with all things with strings in R, life is easier with stringr or stringi.
notEVowelCount <- sapply(c("a", "i", "o", "u"), function(x) lengths(regmatches(dict, gregexec(x, dict))))
eCount <- lengths(regmatches(dict, gregexec("e", dict)))
dict[apply(notEVowelCount, MARGIN = 1, function(x) all(x < 1)) & eCount > 3]</langsyntaxhighlight>
 
=={{header|Racket}}==
 
<langsyntaxhighlight lang="racket">#lang racket
 
;; probably not the best name, but matches the name of the task
Line 1,371:
 
(module+ main
qualifying-words)</langsyntaxhighlight>
 
{{out}}
Line 1,380:
 
Hardly even worth saving as a script file; an easily entered one-liner.
<syntaxhighlight lang="raku" perl6line>.say for "unixdict.txt".IO.lines.grep: { !/<[aiou]>/ and /e.*e.*e.*e/ };</langsyntaxhighlight>
{{out}}
<pre>
Line 1,403:
In an attempt to be a little less useless, here's an alternate script that allows you to specify a vowel, the minimum count to search for, and the file to search. Counts base vowels case, and combining accent insensitive; works with ''any'' text file, not just word lists. Defaults to finding words with at least 4 'e's in unixdict.txt. Default output is same as above.
 
<syntaxhighlight lang="raku" perl6line>unit sub MAIN ($vowel = 'e', $min = 4, $file = 'unixdict.txt');
.say for squish sort
( $file.IO.slurp.words.grep: { ((my $b = .lc.samemark(' ').comb.Bag){$vowel} >= $min) && $b<a e i o u>.sum == $b{$vowel} } )\
».subst(/<[":;,.?!_\[\]]>/, '', :g);</langsyntaxhighlight>
 
How about: find words with at least 4 'a's in the [https://github.com/thundergnat/rc-run/blob/master/rc/resources/lemiz.txt Les Misérables file] used for the [[Word frequency]] task?
Line 1,419:
 
=={{header|Red}}==
<langsyntaxhighlight lang="rebol">Red[]
 
words: read/lines %unixdict.txt
Line 1,432:
]
if all [retain e's > 3] [print word]
]</langsyntaxhighlight>
{{out}}
<pre>
Line 1,458:
 
It also allows the vowel to be specified, &nbsp; and also the minimum number of the specific vowels to be specified on the command line (CL) as well as the dictionary file identifier.
<langsyntaxhighlight lang="rexx">/*REXX pgm finds words (within an identified dict.) which contain more than three "e"s.*/
parse arg char many iFID . /*obtain optional arguments from the CL*/
if char=='' | char=="," then char= 'e' /*Not specified? Then use the default.*/
Line 1,482:
end /*j*/
/*stick a fork in it, we're all done. */
say copies('─', 30) finds " words found having " many ' ' copies(char, many) " letters."</langsyntaxhighlight>
{{out|output|text=&nbsp; when using the default inputs:}}
<pre>
Line 1,506:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
load "stdlib.ring"
 
Line 1,547:
 
see "done..." + nl
</syntaxhighlight>
</lang>
Output:
<pre>
Line 1,572:
 
=={{header|Ruby}}==
<langsyntaxhighlight lang="ruby">File.new("unixdict.txt").each do |word|
puts word if word.count("e") > 3 && word.count("aiou") == 0
end
</syntaxhighlight>
</lang>
{{out}}
<pre>belvedere
Line 1,595:
</pre>
=={{header|Snobol}}==
<langsyntaxhighlight lang="snobol"> input(.words, 1,, 'unixdict.txt') :s(line)
output = 'Error!' :(end)
line word = words :f(end)
Line 1,601:
word 'e' arb 'e' arb 'e' arb 'e' :f(line)
output = word :(line)
end</langsyntaxhighlight>
 
{{out}}
Line 1,623:
 
=={{header|Swift}}==
<langsyntaxhighlight lang="swift">import Foundation
 
func e3(_ word: String) -> Bool {
Line 1,648:
} catch {
print(error.localizedDescription)
}</langsyntaxhighlight>
 
{{out}}
Line 1,672:
=={{header|Wren}}==
{{libheader|Wren-fmt}}
<langsyntaxhighlight lang="ecmascript">import "io" for File
import "/fmt" for Fmt
 
Line 1,684:
Fmt.print("$2d: $s", count, word)
}
}</langsyntaxhighlight>
 
{{out}}
Line 1,707:
 
=={{header|XPL0}}==
<langsyntaxhighlight XPL0lang="xpl0">string 0; \Use zero-terminated strings
int I, Ch, Len;
char Word(100); \(longest word in unixdict.txt is 22 chars)
Line 1,740:
if Es then [Text(0, Word); CrLf(0)];
until Ch = EOF;
]</langsyntaxhighlight>
 
{{out}}
10,333

edits