Primo commit
commit
3012e01168
@ -0,0 +1,13 @@
|
||||
|
||||
.vscode/
|
||||
|
||||
# Dati
|
||||
*.zip
|
||||
wiki*/
|
||||
|
||||
# Test
|
||||
*Test*
|
||||
*.exe
|
||||
|
||||
# Eseguibili
|
||||
Progetto
|
@ -0,0 +1,128 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <stdint.h>
|
||||
#include <numeric>
|
||||
#include <bits/stdc++.h>
|
||||
#include "aux.cpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct Edge {
|
||||
string from, to;
|
||||
int weight;
|
||||
// void print() {
|
||||
// cout << from << " --> " << to << " w: " << weight << endl;
|
||||
// }
|
||||
};
|
||||
|
||||
|
||||
bool compareEdge(Edge e1, Edge e2) {
|
||||
return (e1.weight > e2.weight);
|
||||
}
|
||||
|
||||
class UndirectedWeightedGraph {
|
||||
private:
|
||||
void addWeightedEdge(string from, string to, int weight) {
|
||||
|
||||
for (Edge& edge : AdjList[from]) {
|
||||
if (to == edge.to) {
|
||||
edge.weight += weight;
|
||||
return;
|
||||
}
|
||||
}
|
||||
Edge newEdge;
|
||||
newEdge.from = from;
|
||||
newEdge.to = to;
|
||||
newEdge.weight = weight;
|
||||
AdjList[from].push_back(newEdge);
|
||||
}
|
||||
public:
|
||||
unordered_map<string, vector<Edge>> AdjList;
|
||||
|
||||
void addEdge(string node1, string node2) {
|
||||
addWeightedEdge(node1, node2, 1);
|
||||
addWeightedEdge(node2, node1, 1);
|
||||
}
|
||||
|
||||
// void print() {
|
||||
// for (auto& pair : AdjList) {
|
||||
// for (Edge& edge : pair.second) {
|
||||
// edge.print();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
bool checkComb(vector<Edge> star) {
|
||||
auto it = star.begin();
|
||||
auto v = AdjList[(*it).to];
|
||||
unordered_set<string> acc;
|
||||
for (auto& e : v) {
|
||||
acc.insert(e.to);
|
||||
}
|
||||
|
||||
it++;
|
||||
|
||||
for (; it != star.end(); it++) {
|
||||
auto v = AdjList[(*it).to];
|
||||
unordered_set<string> s;
|
||||
for (auto& e : v) {
|
||||
s.insert(e.to);
|
||||
}
|
||||
acc = intersectSets(acc,s);
|
||||
}
|
||||
|
||||
return acc.size() == 1;
|
||||
}
|
||||
|
||||
vector<vector<Edge>> findSol(int c, int k) {
|
||||
vector<vector<Edge>> Sol;
|
||||
|
||||
vector<string> keys = getShuffleKeys(AdjList);
|
||||
|
||||
for (auto& key : keys) {
|
||||
auto node = AdjList[key];
|
||||
|
||||
if (c == 0)
|
||||
break;
|
||||
|
||||
if (node.size() >= k) {
|
||||
|
||||
sort(node.begin(), node.end(), compareEdge);
|
||||
|
||||
vector<int> indices(k);
|
||||
iota(indices.begin(), indices.end(), 0);
|
||||
do {
|
||||
|
||||
vector<Edge> subV;
|
||||
for (int i : indices)
|
||||
subV.push_back(node[i]);
|
||||
|
||||
if (checkComb(subV)) {
|
||||
c--;
|
||||
Sol.push_back(subV);
|
||||
break;
|
||||
}
|
||||
|
||||
} while(!nextComb(indices, node.size()));
|
||||
}
|
||||
}
|
||||
|
||||
return Sol;
|
||||
}
|
||||
|
||||
void printSol(vector<vector<Edge>> Sol) {
|
||||
for (auto& edges : Sol) {
|
||||
cout << edges[0].from << ":" << " ";
|
||||
for (auto& edge : edges) {
|
||||
cout << edge.to << " ";
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
@ -0,0 +1,54 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include "populateGraph.cpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define ERR(msg) {fprintf(stderr, "%s\n", msg); exit(2);}
|
||||
|
||||
int main(int argc,char const *argv[]) {
|
||||
int k = 5;
|
||||
int count = 1;
|
||||
|
||||
vector<string> Files;
|
||||
|
||||
// configurazione opzioni
|
||||
|
||||
for (int i = 1; i < argc; i++) {
|
||||
string arg(argv[i]);
|
||||
|
||||
if (arg == "-c") {
|
||||
i++;
|
||||
count = atoi(argv[i]);
|
||||
}
|
||||
else if (arg == "-k") {
|
||||
i++;
|
||||
k = atoi(argv[i]);
|
||||
}
|
||||
else {
|
||||
Files.push_back(arg);
|
||||
}
|
||||
}
|
||||
|
||||
UndirectedWeightedGraph graph;
|
||||
|
||||
for (string File : Files) {
|
||||
|
||||
ifstream s(File);
|
||||
if (!s) ERR("errore di apertura del file")
|
||||
|
||||
stringstream buffer;
|
||||
buffer << s.rdbuf();
|
||||
//parsing del file
|
||||
vector<phrase> phrases = parseFile(buffer.str());
|
||||
|
||||
//popolazione del grafo
|
||||
populateGraph(&graph, phrases);
|
||||
}
|
||||
|
||||
vector<vector<Edge>> Sol = graph.findSol(count, k);
|
||||
graph.printSol(Sol);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
# Progetto di ASD di Isabella
|
||||
|
||||
## Usage
|
||||
|
||||
$ g++ Progetto.cpp -o Progetto
|
||||
$ ./Progetto -k 5 -c 10
|
@ -0,0 +1,59 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <unordered_set>
|
||||
#include <unordered_map>
|
||||
#include <algorithm>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
bool nextComb(vector<int> &indices, int n) {
|
||||
int k = indices.size();
|
||||
int i = n - 1;
|
||||
int j = k - 1;
|
||||
while (indices[j] == i) {
|
||||
if (j == 0)
|
||||
return 1;
|
||||
i--;
|
||||
j--;
|
||||
}
|
||||
indices[j]++;
|
||||
for (int l = 0; l <= k - j - 1; l++) {
|
||||
indices[j + l] = indices[j] + l;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename S>
|
||||
unordered_set<S> intersectSets(unordered_set<S> s1, unordered_set<S> s2) {
|
||||
unordered_set<S> s;
|
||||
if (s1.size() <= s2.size()) {
|
||||
for (auto &el : s1) {
|
||||
if (s2.find(el) != s2.end()) {
|
||||
s.insert(el);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (auto &el : s2) {
|
||||
if (s1.find(el) != s1.end()) {
|
||||
s.insert(el);
|
||||
}
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
template <typename K, typename V>
|
||||
vector<K> getShuffleKeys(unordered_map<K, V> map) {
|
||||
srand(time(NULL));
|
||||
vector<K> output;
|
||||
for (auto& pair : map) {
|
||||
output.push_back(pair.first);
|
||||
}
|
||||
random_shuffle(output.begin(), output.end());
|
||||
return output;
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
#include "reader.cpp"
|
||||
#include "Graph.cpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
void populateGraph(UndirectedWeightedGraph* graph, vector<phrase> phrases) {
|
||||
// prendo una parola nel periodo e aggiungo al grafo un arco con la parola dopo e quella dopo ancora se esistono, poi passo al periodo successivo
|
||||
|
||||
for (phrase phrase : phrases) {
|
||||
for (int i = 0; i < phrase.size(); i++) {
|
||||
if (i+1 < phrase.size()) {
|
||||
graph->addEdge(phrase[i], phrase[i+1]);
|
||||
}
|
||||
// if (i+2 < phrase.size()) {
|
||||
// graph->addEdge(phrase[i], phrase[i+2]);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <stdint.h>
|
||||
#include <fstream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef vector<string> phrase;
|
||||
|
||||
bool isWordChar(char a) {
|
||||
return (('a' <= a && a <= 'z') || ('A' <= a && a <= 'Z') || ('0' <= a && a <= '9') || a == '@');
|
||||
}
|
||||
|
||||
bool isPhraseBreak(char a) {
|
||||
return ((a == '!') || (a == ',') || (a == '.') || (a == ':') || (a == ';') || (a == '?') || (a == '(') || (a == ')') || (a == '/') || (a == '\\') || (a == '\n') || (a == '[') || (a == ']') || (a == '_') || (a == '{') || (a == '}') || (a == 126 /* tilde */));
|
||||
}
|
||||
|
||||
unordered_set<string> getStopWords() {
|
||||
unordered_set<string> swords;
|
||||
|
||||
ifstream stop_words("stop_words.txt");
|
||||
string line;
|
||||
while (getline(stop_words, line)) {
|
||||
swords.insert(line);
|
||||
}
|
||||
|
||||
return swords;
|
||||
}
|
||||
|
||||
char asciitolower(char in) {
|
||||
if (in <= 'Z' && in >= 'A')
|
||||
return in - ('Z' - 'z');
|
||||
|
||||
return in;
|
||||
}
|
||||
|
||||
vector<phrase> parseFile (string text) {
|
||||
|
||||
for (size_t i = 0; i < text.size(); i++)
|
||||
{
|
||||
text[i] = asciitolower(text[i]);
|
||||
}
|
||||
|
||||
|
||||
unordered_set<string> stop_words = getStopWords();
|
||||
|
||||
// prendo un vettore, raggruppo caratteri tra spazi in stringhe fino a punteggiatura, raggruppo queste stringhe in periodi che inserisco in un nuovo vettore
|
||||
vector<phrase> phrases;
|
||||
phrase phrase;
|
||||
string word;
|
||||
for (int i = 0; i < text.size(); i++) {
|
||||
if (isWordChar(text[i])) {
|
||||
word.append(1, text[i]);
|
||||
}
|
||||
else if (isPhraseBreak(text[i])) {
|
||||
if (word.size() > 0 && stop_words.find(word) == stop_words.end()) {
|
||||
phrase.push_back(word);
|
||||
}
|
||||
word = "";
|
||||
if (phrase.size() > 0) {
|
||||
phrases.push_back(phrase);
|
||||
phrase.clear();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (word.size() > 0 && stop_words.find(word) == stop_words.end()) {
|
||||
phrase.push_back(word);
|
||||
}
|
||||
|
||||
word = "";
|
||||
}
|
||||
}
|
||||
if (word.size() > 0 && stop_words.find(word) == stop_words.end()) {
|
||||
phrase.push_back(word);
|
||||
}
|
||||
if (phrase.size() > 0) {
|
||||
phrases.push_back(phrase);
|
||||
phrase.clear();
|
||||
}
|
||||
word = "";
|
||||
|
||||
return phrases;
|
||||
}
|
@ -0,0 +1,665 @@
|
||||
a
|
||||
able
|
||||
about
|
||||
above
|
||||
abst
|
||||
accordance
|
||||
according
|
||||
accordingly
|
||||
across
|
||||
act
|
||||
actually
|
||||
added
|
||||
adj
|
||||
affected
|
||||
affecting
|
||||
affects
|
||||
after
|
||||
afterwards
|
||||
again
|
||||
against
|
||||
ah
|
||||
all
|
||||
almost
|
||||
alone
|
||||
along
|
||||
already
|
||||
also
|
||||
although
|
||||
always
|
||||
am
|
||||
among
|
||||
amongst
|
||||
an
|
||||
and
|
||||
announce
|
||||
another
|
||||
any
|
||||
anybody
|
||||
anyhow
|
||||
anymore
|
||||
anyone
|
||||
anything
|
||||
anyway
|
||||
anyways
|
||||
anywhere
|
||||
apparently
|
||||
approximately
|
||||
are
|
||||
aren
|
||||
arent
|
||||
arise
|
||||
around
|
||||
as
|
||||
aside
|
||||
ask
|
||||
asking
|
||||
at
|
||||
auth
|
||||
available
|
||||
away
|
||||
awfully
|
||||
b
|
||||
back
|
||||
be
|
||||
became
|
||||
because
|
||||
become
|
||||
becomes
|
||||
becoming
|
||||
been
|
||||
before
|
||||
beforehand
|
||||
begin
|
||||
beginning
|
||||
beginnings
|
||||
begins
|
||||
behind
|
||||
being
|
||||
believe
|
||||
below
|
||||
beside
|
||||
besides
|
||||
between
|
||||
beyond
|
||||
biol
|
||||
both
|
||||
brief
|
||||
briefly
|
||||
but
|
||||
by
|
||||
c
|
||||
ca
|
||||
came
|
||||
can
|
||||
cannot
|
||||
can't
|
||||
cause
|
||||
causes
|
||||
certain
|
||||
certainly
|
||||
co
|
||||
com
|
||||
come
|
||||
comes
|
||||
contain
|
||||
containing
|
||||
contains
|
||||
could
|
||||
couldnt
|
||||
d
|
||||
date
|
||||
did
|
||||
didn't
|
||||
different
|
||||
do
|
||||
does
|
||||
doesn't
|
||||
doing
|
||||
done
|
||||
don't
|
||||
down
|
||||
downwards
|
||||
due
|
||||
during
|
||||
e
|
||||
each
|
||||
ed
|
||||
edu
|
||||
effect
|
||||
eg
|
||||
eight
|
||||
eighty
|
||||
either
|
||||
else
|
||||
elsewhere
|
||||
end
|
||||
ending
|
||||
enough
|
||||
especially
|
||||
et
|
||||
et-al
|
||||
etc
|
||||
even
|
||||
ever
|
||||
every
|
||||
everybody
|
||||
everyone
|
||||
everything
|
||||
everywhere
|
||||
ex
|
||||
except
|
||||
f
|
||||
far
|
||||
few
|
||||
ff
|
||||
fifth
|
||||
first
|
||||
five
|
||||
fix
|
||||
followed
|
||||
following
|
||||
follows
|
||||
for
|
||||
former
|
||||
formerly
|
||||
forth
|
||||
found
|
||||
four
|
||||
from
|
||||
further
|
||||
furthermore
|
||||
g
|
||||
gave
|
||||
get
|
||||
gets
|
||||
getting
|
||||
give
|
||||
given
|
||||
gives
|
||||
giving
|
||||
go
|
||||
goes
|
||||
gone
|
||||
got
|
||||
gotten
|
||||
h
|
||||
had
|
||||
happens
|
||||
hardly
|
||||
has
|
||||
hasn't
|
||||
have
|
||||
haven't
|
||||
having
|
||||
he
|
||||
hed
|
||||
hence
|
||||
her
|
||||
here
|
||||
hereafter
|
||||
hereby
|
||||
herein
|
||||
heres
|
||||
hereupon
|
||||
hers
|
||||
herself
|
||||
hes
|
||||
hi
|
||||
hid
|
||||
him
|
||||
himself
|
||||
his
|
||||
hither
|
||||
home
|
||||
how
|
||||
howbeit
|
||||
however
|
||||
hundred
|
||||
i
|
||||
id
|
||||
ie
|
||||
if
|
||||
i'll
|
||||
im
|
||||
immediate
|
||||
immediately
|
||||
importance
|
||||
important
|
||||
in
|
||||
inc
|
||||
indeed
|
||||
index
|
||||
information
|
||||
instead
|
||||
into
|
||||
invention
|
||||
inward
|
||||
is
|
||||
isn't
|
||||
it
|
||||
itd
|
||||
it'll
|
||||
its
|
||||
itself
|
||||
i've
|
||||
j
|
||||
just
|
||||
k
|
||||
keep keeps
|
||||
kept
|
||||
kg
|
||||
km
|
||||
know
|
||||
known
|
||||
knows
|
||||
l
|
||||
largely
|
||||
last
|
||||
lately
|
||||
later
|
||||
latter
|
||||
latterly
|
||||
least
|
||||
less
|
||||
lest
|
||||
let
|
||||
lets
|
||||
like
|
||||
liked
|
||||
likely
|
||||
line
|
||||
little
|
||||
'll
|
||||
look
|
||||
looking
|
||||
looks
|
||||
ltd
|
||||
m
|
||||
made
|
||||
mainly
|
||||
make
|
||||
makes
|
||||
many
|
||||
may
|
||||
maybe
|
||||
me
|
||||
mean
|
||||
means
|
||||
meantime
|
||||
meanwhile
|
||||
merely
|
||||
mg
|
||||
might
|
||||
million
|
||||
miss
|
||||
ml
|
||||
more
|
||||
moreover
|
||||
most
|
||||
mostly
|
||||
mr
|
||||
mrs
|
||||
much
|
||||
mug
|
||||
must
|
||||
my
|
||||
myself
|
||||
n
|
||||
na
|
||||
name
|
||||
namely
|
||||
nay
|
||||
nd
|
||||
near
|
||||
nearly
|
||||
necessarily
|
||||
necessary
|
||||
need
|
||||
needs
|
||||
neither
|
||||
never
|
||||
nevertheless
|
||||
new
|
||||
next
|
||||
nine
|
||||
ninety
|
||||
no
|
||||
nobody
|
||||
non
|
||||
none
|
||||
nonetheless
|
||||
noone
|
||||
nor
|
||||
normally
|
||||
nos
|
||||
not
|
||||
noted
|
||||
nothing
|
||||
now
|
||||
nowhere
|
||||
o
|
||||
obtain
|
||||
obtained
|
||||
obviously
|
||||
of
|
||||
off
|
||||
often
|
||||
oh
|
||||
ok
|
||||
okay
|
||||
old
|
||||
omitted
|
||||
on
|
||||
once
|
||||
one
|
||||
ones
|
||||
only
|
||||
onto
|
||||
or
|
||||
ord
|
||||
other
|
||||
others
|
||||
otherwise
|
||||
ought
|
||||
our
|
||||
ours
|
||||
ourselves
|
||||
out
|
||||
outside
|
||||
over
|
||||
overall
|
||||
owing
|
||||
own
|
||||
p
|
||||
page
|
||||
pages
|
||||
part
|
||||
particular
|
||||
particularly
|
||||
past
|
||||
per
|
||||
perhaps
|
||||
placed
|
||||
please
|
||||
plus
|
||||
poorly
|
||||
possible
|
||||
possibly
|
||||
potentially
|
||||
pp
|
||||
predominantly
|
||||
present
|
||||
previously
|
||||
primarily
|
||||
probably
|
||||
promptly
|
||||
proud
|
||||
provides
|
||||
put
|
||||
q
|
||||
que
|
||||
quickly
|
||||
quite
|
||||
qv
|
||||
r
|
||||
ran
|
||||
rather
|
||||
rd
|
||||
re
|
||||
readily
|
||||
really
|
||||
recent
|
||||
recently
|
||||
ref
|
||||
refs
|
||||
regarding
|
||||
regardless
|
||||
regards
|
||||
related
|
||||
relatively
|
||||
research
|
||||
respectively
|
||||
resulted
|
||||
resulting
|
||||
results
|
||||
right
|
||||
run
|
||||
s
|
||||
said
|
||||
same
|
||||
saw
|
||||
say
|
||||
saying
|
||||
says
|
||||
sec
|
||||
section
|
||||
see
|
||||
seeing
|
||||
seem
|
||||
seemed
|
||||
seeming
|
||||
seems
|
||||
seen
|
||||
self
|
||||
selves
|
||||
sent
|
||||
seven
|
||||
several
|
||||
shall
|
||||
she
|
||||
shed
|
||||
she'll
|
||||
shes
|
||||
should
|
||||
shouldn't
|
||||
show
|
||||
showed
|
||||
shown
|
||||
showns
|
||||
shows
|
||||
significant
|
||||
significantly
|
||||
similar
|
||||
similarly
|
||||
since
|
||||
six
|
||||
slightly
|
||||
so
|
||||
some
|
||||
somebody
|
||||
somehow
|
||||
someone
|
||||
somethan
|
||||
something
|
||||
sometime
|
||||
sometimes
|
||||
somewhat
|
||||
somewhere
|
||||
soon
|
||||
sorry
|
||||
specifically
|
||||
specified
|
||||
specify
|
||||
specifying
|
||||
still
|
||||
stop
|
||||
strongly
|
||||
sub
|
||||
substantially
|
||||
successfully
|
||||
such
|
||||
sufficiently
|
||||
suggest
|
||||
sup
|
||||
sure t
|
||||
take
|
||||
taken
|
||||
taking
|
||||
tell
|
||||
tends
|
||||
th
|
||||
than
|
||||
thank
|
||||
thanks
|
||||
thanx
|
||||
that
|
||||
that'll
|
||||
thats
|
||||
that've
|
||||
the
|
||||
their
|
||||
theirs
|
||||
them
|
||||
themselves
|
||||
then
|
||||
thence
|
||||
there
|
||||
thereafter
|
||||
thereby
|
||||
thered
|
||||
therefore
|
||||
therein
|
||||
there'll
|
||||
thereof
|
||||
therere
|
||||
theres
|
||||
thereto
|
||||
thereupon
|
||||
there've
|
||||
these
|
||||
they
|
||||
theyd
|
||||
they'll
|
||||
theyre
|
||||
they've
|
||||
think
|
||||
this
|
||||
those
|
||||
thou
|
||||
though
|
||||
thoughh
|
||||
thousand
|
||||
throug
|
||||
through
|
||||
throughout
|
||||
thru
|
||||
thus
|
||||
til
|
||||
tip
|
||||
to
|
||||
together
|
||||
too
|
||||
took
|
||||
toward
|
||||
towards
|
||||
tried
|
||||
tries
|
||||
truly
|
||||
try
|
||||
trying
|
||||
ts
|
||||
twice
|
||||
two
|
||||
u
|
||||
un
|
||||
under
|
||||
unfortunately
|
||||
unless
|
||||
unlike
|
||||
unlikely
|
||||
until
|
||||
unto
|
||||
up
|
||||
upon
|
||||
ups
|
||||
us
|
||||
use
|
||||
used
|
||||
useful
|
||||
usefully
|
||||
usefulness
|
||||
uses
|
||||
using
|
||||
usually
|
||||
v
|
||||
value
|
||||
various
|
||||
've
|
||||
very
|
||||
via
|
||||
viz
|
||||
vol
|
||||
vols
|
||||
vs
|
||||
w
|
||||
want
|
||||
wants
|
||||
was
|
||||
wasnt
|
||||
way
|
||||
we
|
||||
wed
|
||||
welcome
|
||||
we'll
|
||||
went
|
||||
were
|
||||
werent
|
||||
we've
|
||||
what
|
||||
whatever
|
||||
what'll
|
||||
whats
|
||||
when
|
||||
whence
|
||||
whenever
|
||||
where
|
||||
whereafter
|
||||
whereas
|
||||
whereby
|
||||
wherein
|
||||
wheres
|
||||
whereupon
|
||||
wherever
|
||||
whether
|
||||
which
|
||||
while
|
||||
whim
|
||||
whither
|
||||
who
|
||||
whod
|
||||
whoever
|
||||
whole
|
||||
who'll
|
||||
whom
|
||||
whomever
|
||||
whos
|
||||
whose
|
||||
why
|
||||
widely
|
||||
willing
|
||||
wish
|
||||
with
|
||||
within
|
||||
without
|
||||
wont
|
||||
words
|
||||
world
|
||||
would
|
||||
wouldnt
|
||||
www
|
||||
x
|
||||
y
|
||||
yes
|
||||
yet
|
||||
you
|
||||
youd
|
||||
you'll
|
||||
your
|
||||
youre
|
||||
yours
|
||||
yourself
|
||||
yourselves
|
||||
you've
|
||||
z
|
||||
zero
|
Loading…
Reference in New Issue