Motivação Link para o cabeçalho
Esses dias me perguntei qual é a palavra brasileira com mais anagramas. AMOR, que de cabeça sei que possui ao menos os anagramas
- ROMA
- RAMO
- OMAR
- MORA
- ARMO
Mas será que há palabvras com mais anagramas do que essa? Será que obrigatoriamente essas palavras devem ser mais longas? Será que o tamanho das palavras influencia na quantidade de anagramas?
Utilizando este site da USP, baixei uma lista de 245366 palavras da língua portuguesa para verificar isso.
Código Link para o cabeçalho
Após baixar o dicionário em meu computador, tomei cada palavra do dicionário e coloquei suas letras em ordem alfabética. Com isso, AMOR se torna, bem, AMOR, pois ela já está com as suas letras em ordem alfabética. Mas todos os seus anagramas (ROMA, RAMO, OMAR, MORA, ARMO) também se tornarão AMOR. E o mesmo vale para toda palavra do dicionário. Vou chamar essas palavras todas de palavra_colapsada
.
Com isso, basta encontrar os casos de cada palavra colapsada para encontrar todos os anagramas dela.
library(tidyverse)
dicionario <-
read_csv(file = "dados/palavras_usp.txt", col_names = FALSE) |>
rename(palavra = X1)
colapsar <- function(x){
return(paste(sort(unlist(strsplit(x, split = ""))), collapse = ""))
}
palavra_colapsada <- rep(NA, nrow(dicionario))
for(j in 1:nrow(dicionario)){
palavra_colapsada[j] <- colapsar(pull(dicionario[j, 1]))
}
dicionario <-
dicionario |>
bind_cols(palavra_colapsada = palavra_colapsada) |>
mutate(tamanho = nchar(palavra_colapsada))
Analisando este resultado, temos o seguinte:
resumo <-
dicionario |>
count(palavra_colapsada)
resumo |>
arrange(desc(n))
## # A tibble: 207,862 × 2
## palavra_colapsada n
## <chr> <int>
## 1 aaeirrst 15
## 2 adeimor 13
## 3 aeimorsv 13
## 4 aaeilrst 12
## 5 aaelmorst 12
## 6 aacelmors 11
## 7 aaelrst 11
## 8 aceimors 11
## 9 aceiorrst 11
## 10 aceorst 11
## # ℹ 207,852 more rows
dicionario |>
filter(palavra_colapsada == "aaeirrst") |>
print(n = Inf)
## # A tibble: 15 × 3
## palavra palavra_colapsada tamanho
## <chr> <chr> <int>
## 1 arrastei aaeirrst 8
## 2 arriaste aaeirrst 8
## 3 arteiras aaeirrst 8
## 4 arterias aaeirrst 8
## 5 aterrais aaeirrst 8
## 6 atirares aaeirrst 8
## 7 atraires aaeirrst 8
## 8 estirara aaeirrst 8
## 9 iteraras aaeirrst 8
## 10 rasteira aaeirrst 8
## 11 rastreai aaeirrst 8
## 12 rastreia aaeirrst 8
## 13 restaria aaeirrst 8
## 14 retraias aaeirrst 8
## 15 traseira aaeirrst 8
A palavra em língua portuguesa com a maior quantidade de anagramas é ARRASTEI, com as 15 variações mostradas acima.
Mas será que AMOR é a palavra de quatro letras com mais anagramas? Quais são esses? E casos não seja a palavra de quatro letras com mais anagramas, qual será?
dicionario |>
filter(palavra_colapsada == "amor") |>
print(n = Inf)
## # A tibble: 7 × 3
## palavra palavra_colapsada tamanho
## <chr> <chr> <int>
## 1 amor amor 4
## 2 armo amor 4
## 3 mora amor 4
## 4 oram amor 4
## 5 ramo amor 4
## 6 roam amor 4
## 7 roma amor 4
dicionario |>
filter(tamanho == 4) |>
count(palavra_colapsada) |>
arrange(desc(n))
## # A tibble: 1,025 × 2
## palavra_colapsada n
## <chr> <int>
## 1 acos 8
## 2 amor 7
## 3 aors 7
## 4 emor 7
## 5 acor 6
## 6 aemr 6
## 7 amsu 6
## 8 egor 6
## 9 eimr 6
## 10 aclo 5
## # ℹ 1,015 more rows
dicionario |>
filter(palavra_colapsada == "acos") |>
print(n = Inf)
## # A tibble: 8 × 3
## palavra palavra_colapsada tamanho
## <chr> <chr> <int>
## 1 asco acos 4
## 2 caos acos 4
## 3 caso acos 4
## 4 coas acos 4
## 5 cosa acos 4
## 6 ocas acos 4
## 7 saco acos 4
## 8 soca acos 4
Assim, AMOR possui sete anagramas. ORAM e ROAM foram as duas únicas que faltaram na minha lista.
Também é posível ver que a palavra ASCO, com os anagramas mostrados acima, é a palavra de quatro letras com a maior quantidade de anagramas, totalizando oito.