Teacup rim text
On a set of coasters we have, there's a picture of a teacup. On the rim of the teacup the word "TEA" appears a number of times separated by bullet characters. It occurred to me that if the bullet were removed and the words run together, you could start at any letter and still end up with a meaningful three-letter word. So start at the "T" and read "TEA". Start at the "E" and read "EAT", or start at the "A" and read "ATE".
That got me thinking that maybe there are other words that could be used rather that "TEA". And that's just English. What about Italian or Greek or ... um ... Telugu.
So here's the task: from a web accessible or locally accessible word source, iterate through each word. With each word, peel off the first letter and put it at the end. Check if the word exists. If it does, keep going with the next letter, repeating the process for as many letters as there are minus one. If all of the words exist store the original word. List the words that survive the process at the end. Optionally list all their variants.
Factor
<lang factor>USING: combinators.short-circuit fry grouping hash-sets http.client kernel make math prettyprint sequences sequences.extras sets sorting splitting unicode ;
"https://raw.githubusercontent.com/dwyl/english-words/master/words.txt" http-get nip "\n" split harvest [ { [ length 2 > ] [ [ letter? ] all? ] [ all-equal? not ] } 1&& ] filter ! we want lowercase words with > 2 [ >hash-set ] [ ] bi ! letters which are not all the same. [ [ all-rotations members swap dupd '[ _ in? ] all? [ , ] [ drop ] if ] with each ] { } make [ natural-sort ] map members .</lang>
- Output:
{ { "arar" "rara" } { "ary" "rya" "yar" } { "ate" "eat" "tea" } { "eth" "het" "the" } }
Julia
Using the MIT 10000 word list, and excluding words of less than three letters, to reduce output length. <lang julia>using HTTP
function getwords()
req = HTTP.request("GET", "https://www.mit.edu/~ecprice/wordlist.10000") Dict{String, Int}((string(x), 1) for x in split(String(req.body), r"\s+"))
end
rotate(s, n) = String(circshift(Vector{UInt8}(s), n))
isliketea(w, d) = (n = length(w); n > 2 && all(i -> haskey(d, rotate(w, i)), 1:n-1))
function getteawords()
wordlistdict = getwords() for word in collect(keys(wordlistdict)) if isliketea(word, wordlistdict) println(word, ": ", [rotate(word, i) for i in 1:length(word)-1]) end end
end
getteawords()
</lang>
- Output:
pas: ["spa", "asp"] xxx: ["xxx", "xxx"] iii: ["iii", "iii"] asp: ["pas", "spa"] tea: ["ate", "eat"] spa: ["asp", "pas"] ate: ["eat", "tea"] aim: ["mai", "ima"] aaa: ["aaa", "aaa"] car: ["rca", "arc"] ooo: ["ooo", "ooo"] sip: ["psi", "ips"] arc: ["car", "rca"] ips: ["sip", "psi"] www: ["www", "www"] mai: ["ima", "aim"] rca: ["arc", "car"] eat: ["tea", "ate"] psi: ["ips", "sip"] ima: ["aim", "mai"]
Perl 6
Using the same file as the reference implementation (Lychen), downloaded to a local file to give my connection a break.
There doesn't seem to be any restriction that the word needs to consist only of lowercase letters, so words of any case are included. Since the example code specifically shows the example words (TEA, EAT, ATE) in uppercase, I elected to uppercase the found words. Most of them are anyway, as this list seems to be full of abbreviations, acronyms and inialisms. Ah well. I didn't choose the word list.
<lang perl6>my %words; './words.txt'.IO.slurp.words.map: { %words{.uc.comb.sort.join}.push: $_.uc };
for %words.keys { %words{$_}:delete if %words{$_}.elems < 2 or $_.chars < 3 };
my @teacups;
for %words.values -> @these {
MAYBE: for @these { my $maybe = $_; my @print; for ^$maybe.chars { if $maybe ∈ @these { @print.push: $maybe; $maybe = $maybe.comb.list.rotate.join; } else { @print = (); last } } if @print.elems { @teacups.push: @print; } }
}
say .unique.join(", ") if .elems for sort @teacups;</lang>
- Output:
AAE, AEA, EAA AAF, AFA, FAA AAH, AHA, HAA AAM, AMA, MAA AAS, ASA, SAA ABB, BBA, BAB ABD, BDA, DAB ABI, BIA, IAB ABL, BLA, LAB ABM, BMA, MAB ABR, BRA, RAB ABS, BSA, SAB ABV, BVA, VAB ACC, CCA, CAC ACD, CDA, DAC ACF, CFA, FAC ACH, CHA, HAC ACM, CMA, MAC ACP, CPA, PAC ACS, CSA, SAC ACT, CTA, TAC ACV, CVA, VAC ACW, CWA, WAC ADAD, DADA ADAR, DARA, ARAD, RADA ADB, DBA, BAD ADC, DCA, CAD ADD, DDA, DAD ADE, DEA, EAD ADF, DFA, FAD ADI, DIA, IAD ADM, DMA, MAD ADN, DNA, NAD ADO, DOA, OAD ADP, DPA, PAD ADS, DSA, SAD AEA, EAA, AAE AEC, ECA, CAE AER, ERA, RAE AES, ESA, SAE AET, ETA, TAE AFA, FAA, AAF AFC, FCA, CAF AFI, FIA, IAF AFL, FLA, LAF AFR, FRA, RAF AGAG, GAGA AGC, GCA, CAG AGD, GDA, DAG AGH, GHA, HAG AGR, GRA, RAG AGS, GSA, SAG AGT, GTA, TAG AHA, HAA, AAH AHI, HIA, IAH AIC, ICA, CAI AIL, ILA, LAI AIM, IMA, MAI AIR, IRA, RAI AIS, ISA, SAI AIT, ITA, TAI AKE, KEA, EAK AKH, KHA, HAK AKO, KOA, OAK ALC, LCA, CAL ALE, LEA, EAL ALG, LGA, GAL ALI, LIA, IAL ALIT, LITA, ITAL, TALI ALT, LTA, TAL AMA, MAA, AAM AMAN, MANA, ANAM, NAMA AMAR, MARA, ARAM, RAMA AMB, MBA, BAM AMC, MCA, CAM AME, MEA, EAM AMEL, MELA, ELAM, LAME AMEN, MENA, ENAM, NAME AMI, MIA, IAM AMO, MOA, OAM AMOR, MORA, ORAM, RAMO AMP, MPA, PAM AMR, MRA, RAM AMS, MSA, SAM AMT, MTA, TAM AMU, MUA, UAM AMY, MYA, YAM ANAM, NAMA, AMAN, MANA ANAN, NANA ANC, NCA, CAN AND, NDA, DAN ANE, NEA, EAN ANG, NGA, GAN ANH, NHA, HAN ANI, NIA, IAN ANIL, NILA, ILAN, LANI ANS, NSA, SAN ANY, NYA, YAN AOB, OBA, BAO AOL, OLA, LAO AOP, OPA, PAO AOR, ORA, RAO AOS, OSA, SAO APC, PCA, CAP APG, PGA, GAP APH, PHA, HAP APL, PLA, LAP APM, PMA, MAP APO, POA, OAP APP, PPA, PAP APR, PRA, RAP APS, PSA, SAP APT, PTA, TAP ARAD, RADA, ADAR, DARA ARAM, RAMA, AMAR, MARA ARAR, RARA ARAS, RASA, ASAR, SARA ARC, RCA, CAR ARD, RDA, DAR ARE, REA, EAR ARF, RFA, FAR ARIS, RISA, ISAR, SARI ARM, RMA, MAR ARN, RNA, NAR ARO, ROA, OAR ARS, RSA, SAR ART, RTA, TAR ARU, RUA, UAR ARY, RYA, YAR ASA, SAA, AAS ASAR, SARA, ARAS, RASA ASB, SBA, BAS ASC, SCA, CAS ASE, SEA, EAS ASEL, SELA, ELAS, LASE ASER, SERA, ERAS, RASE ASH, SHA, HAS ASI, SIA, IAS ASK, SKA, KAS ASM, SMA, MAS ASN, SNA, NAS ASP, SPA, PAS ASR, SRA, RAS ASS, SSA, SAS AST, STA, TAS ASW, SWA, WAS ATB, TBA, BAT ATC, TCA, CAT ATE, TEA, EAT ATH, THA, HAT ATM, TMA, MAT ATO, TOA, OAT ATR, TRA, RAT ATV, TVA, VAT AUC, UCA, CAU AUD, UDA, DAU AUL, ULA, LAU AUM, UMA, MAU AUN, UNA, NAU AUS, USA, SAU AVG, VGA, GAV AYH, YHA, HAY AYM, YMA, MAY BAB, ABB, BBA BAD, ADB, DBA BAM, AMB, MBA BAO, AOB, OBA BAS, ASB, SBA BAT, ATB, TBA BBA, BAB, ABB BCR, CRB, RBC BCS, CSB, SBC BDA, DAB, ABD BDC, DCB, CBD BDT, DTB, TBD BEC, ECB, CBE BED, EDB, DBE BER, ERB, RBE BES, ESB, SBE BIA, IAB, ABI BID, IDB, DBI BLA, LAB, ABL BLL, LLB, LBL BLO, LOB, OBL BMA, MAB, ABM BMG, MGB, GBM BMI, MIB, IBM BMP, MPB, PBM BOM, OMB, MBO BOO, OOB, OBO BOT, OTB, TBO BRA, RAB, ABR BRC, RCB, CBR BSA, SAB, ABS BSC, SCB, CBS BSD, SDB, DBS BSO, SOB, OBS BSS, SSB, SBS BST, STB, TBS BSW, SWB, WBS BUS, USB, SBU BVA, VAB, ABV BYO, YOB, OBY CAC, ACC, CCA CAD, ADC, DCA CAE, AEC, ECA CAF, AFC, FCA CAG, AGC, GCA CAI, AIC, ICA CAL, ALC, LCA CAM, AMC, MCA CAN, ANC, NCA CAP, APC, PCA CAR, ARC, RCA CAS, ASC, SCA CAT, ATC, TCA CAU, AUC, UCA CBD, BDC, DCB CBE, BEC, ECB CBR, BRC, RCB CBS, BSC, SCB CCA, CAC, ACC CCD, CDC, DCC CCF, CFC, FCC CCI, CIC, ICC CCM, CMC, MCC CCP, CPC, PCC CCR, CRC, RCC CCS, CSC, SCC CCT, CTC, TCC CCW, CWC, WCC CDA, DAC, ACD CDC, DCC, CCD CDI, DIC, ICD CDN, DNC, NCD CDO, DOC, OCD CDS, DSC, SCD CDU, DUC, UCD CED, EDC, DCE CEE, EEC, ECE CEN, ENC, NCE CFA, FAC, ACF CFC, FCC, CCF CFE, FEC, ECF CFM, FMC, MCF CFP, FPC, PCF CFR, FRC, RCF CGM, GMC, MCG CHA, HAC, ACH CHI, HIC, ICH CHM, HMC, MCH CHO, HOC, OCH CHS, HSC, SCH CIC, ICC, CCI CID, IDC, DCI CIM, IMC, MCI CIO, IOC, OCI CIP, IPC, PCI CIR, IRC, RCI CIS, ISC, SCI CLE, LEC, ECL CLR, LRC, RCL CLU, LUC, UCL CLY, LYC, YCL CMA, MAC, ACM CMC, MCC, CCM CMD, MDC, DCM CMI, MIC, ICM CML, MLC, LCM CMS, MSC, SCM CMT, MTC, TCM CNM, NMC, MCN CNR, NRC, RCN CON, ONC, NCO COP, OPC, PCO COR, ORC, RCO COS, OSC, SCO CPA, PAC, ACP CPC, PCC, CCP CPI, PIC, ICP CPL, PLC, LCP CPM, PMC, MCP CPR, PRC, RCP CPS, PSC, SCP CRB, RBC, BCR CRC, RCC, CCR CRE, REC, ECR CRL, RLC, LCR CRO, ROC, OCR CRS, RSC, SCR CRT, RTC, TCR CRU, RUC, UCR CSA, SAC, ACS CSB, SBC, BCS CSC, SCC, CCS CSE, SEC, ECS CSF, SFC, FCS CSI, SIC, ICS CSL, SLC, LCS CSM, SMC, MCS CSO, SOC, OCS CSP, SPC, PCS CSR, SRC, RCS CSS, SSC, SCS CST, STC, TCS CTA, TAC, ACT CTC, TCC, CCT CTD, TDC, DCT CTE, TEC, ECT CTF, TFC, FCT CTG, TGC, GCT CTO, TOC, OCT CTT, TTC, TCT CUE, UEC, ECU CUR, URC, RCU CVA, VAC, ACV CWA, WAC, ACW CWC, WCC, CCW DAB, ABD, BDA DAC, ACD, CDA DAD, ADD, DDA DADA, ADAD DAG, AGD, GDA DAN, AND, NDA DAR, ARD, RDA DARA, ARAD, RADA, ADAR DAU, AUD, UDA DBA, BAD, ADB DBE, BED, EDB DBI, BID, IDB DBS, BSD, SDB DCA, CAD, ADC DCB, CBD, BDC DCC, CCD, CDC DCE, CED, EDC DCI, CID, IDC DCM, CMD, MDC DCT, CTD, TDC DDA, DAD, ADD DDE, DED, EDD DDS, DSD, SDD DDT, DTD, TDD DEA, EAD, ADE DED, EDD, DDE DEN, END, NDE DENI, ENID, NIDE, IDEN DEP, EPD, PDE DET, ETD, TDE DFA, FAD, ADF DFE, FED, EDF DFI, FID, IDF DIA, IAD, ADI DIC, ICD, CDI DIM, IMD, MDI DIN, IND, NDI DIT, ITD, TDI DIU, IUD, UDI DLI, LID, IDL DLL, LLD, LDL DLS, LSD, SDL DMA, MAD, ADM DME, MED, EDM DMI, MID, IDM DMS, MSD, SDM DMT, MTD, TDM DMV, MVD, VDM DNA, NAD, ADN DNC, NCD, CDN DNI, NID, IDN DOA, OAD, ADO DOC, OCD, CDO DOE, OED, EDO DOI, OID, IDO DOLI, OLID, LIDO, IDOL DOS, OSD, SDO DOU, OUD, UDO DPA, PAD, ADP DPE, PED, EDP DPI, PID, IDP DPP, PPD, PDP DRU, RUD, UDR DSA, SAD, ADS DSC, SCD, CDS DSD, SDD, DDS DSE, SED, EDS DSI, SID, IDS DSM, SMD, MDS DSO, SOD, ODS DSP, SPD, PDS DSR, SRD, RDS DSS, SSD, SDS DSU, SUD, UDS DTB, TBD, BDT DTD, TDD, DDT DTE, TED, EDT DTP, TPD, PDT DUC, UCD, CDU DYE, YED, EDY DZO, ZOD, ODZ EAA, AAE, AEA EAD, ADE, DEA EAK, AKE, KEA EAL, ALE, LEA EAM, AME, MEA EAN, ANE, NEA EAR, ARE, REA EAS, ASE, SEA EAT, ATE, TEA ECA, CAE, AEC ECB, CBE, BEC ECE, CEE, EEC ECF, CFE, FEC ECL, CLE, LEC ECR, CRE, REC ECS, CSE, SEC ECT, CTE, TEC ECU, CUE, UEC EDB, DBE, BED EDC, DCE, CED EDD, DDE, DED EDF, DFE, FED EDM, DME, MED EDO, DOE, OED EDP, DPE, PED EDS, DSE, SED EDT, DTE, TED EDY, DYE, YED EEC, ECE, CEE EEK, EKE, KEE EEL, ELE, LEE EEM, EME, MEE EEN, ENE, NEE EER, ERE, REE EFT, FTE, TEF EGOR, GORE, OREG, REGO EGP, GPE, PEG EHF, HFE, FEH EHR, HRE, REH EIN, INE, NEI EIR, IRE, REI EIS, ISE, SEI EKE, KEE, EEK ELAM, LAME, AMEL, MELA ELAS, LASE, ASEL, SELA ELE, LEE, EEL ELM, LME, MEL ELS, LSE, SEL EME, MEE, EEM EMM, MME, MEM EMP, MPE, PEM EMR, MRE, REM EMS, MSE, SEM ENAM, NAME, AMEN, MENA ENC, NCE, CEN END, NDE, DEN ENE, NEE, EEN ENID, NIDE, IDEN, DENI ENOL, NOLE, OLEN, LENO ENS, NSE, SEN EOM, OME, MEO EON, ONE, NEO EPD, PDE, DEP EPP, PPE, PEP EPS, PSE, SEP ERA, RAE, AER ERAS, RASE, ASER, SERA ERB, RBE, BER ERE, REE, EER ERF, RFE, FER ERI, RIE, IER ERL, RLE, LER ERS, RSE, SER ERT, RTE, TER ERY, RYE, YER ESA, SAE, AES ESB, SBE, BES ESH, SHE, HES ESL, SLE, LES ESM, SME, MES ESO, SOE, OES ESOP, SOPE, OPES, PESO ESP, SPE, PES ESS, SSE, SES EST, STE, TES ETA, TAE, AET ETD, TDE, DET ETH, THE, HET ETS, TSE, SET ETY, TYE, YET EYN, YNE, NEY FAA, AAF, AFA FAC, ACF, CFA FAD, ADF, DFA FAR, ARF, RFA FCA, CAF, AFC FCC, CCF, CFC FCS, CSF, SFC FCT, CTF, TFC FEC, ECF, CFE FED, EDF, DFE FEH, EHF, HFE FER, ERF, RFE FIA, IAF, AFI FID, IDF, DFI FLA, LAF, AFL FMC, MCF, CFM FMS, MSF, SFM FOO, OOF, OFO FOS, OSF, SFO FOU, OUF, UFO FPC, PCF, CFP FRA, RAF, AFR FRC, RCF, CFR FRI, RIF, IFR FRT, RTF, TFR FSH, SHF, HFS FSU, SUF, UFS FTE, TEF, EFT GAGA, AGAG GAL, ALG, LGA GAN, ANG, NGA GAP, APG, PGA GAV, AVG, VGA GBM, BMG, MGB GCA, CAG, AGC GCT, CTG, TGC GDA, DAG, AGD GHA, HAG, AGH GMC, MCG, CGM GON, ONG, NGO GORE, OREG, REGO, EGOR GPE, PEG, EGP GPI, PIG, IGP GPS, PSG, SGP GRA, RAG, AGR GSA, SAG, AGS GTA, TAG, AGT GTO, TOG, OGT HAA, AAH, AHA HAC, ACH, CHA HAG, AGH, GHA HAK, AKH, KHA HAN, ANH, NHA HAP, APH, PHA HAS, ASH, SHA HAT, ATH, THA HAY, AYH, YHA HES, ESH, SHE HET, ETH, THE HFE, FEH, EHF HFS, FSH, SHF HIA, IAH, AHI HIC, ICH, CHI HIN, INH, NHI HIP, IPH, PHI HIS, ISH, SHI HMC, MCH, CHM HMP, MPH, PHM HMS, MSH, SHM HMT, MTH, THM HOC, OCH, CHO HOO, OOH, OHO HOP, OPH, PHO HPO, POH, OHP HRE, REH, EHR HRS, RSH, SHR HSC, SCH, CHS HSU, SUH, UHS HTS, TSH, SHT HUS, USH, SHU IAB, ABI, BIA IAD, ADI, DIA IAF, AFI, FIA IAH, AHI, HIA IAL, ALI, LIA IAM, AMI, MIA IAN, ANI, NIA IAS, ASI, SIA IBM, BMI, MIB ICA, CAI, AIC ICC, CCI, CIC ICD, CDI, DIC ICH, CHI, HIC ICM, CMI, MIC ICP, CPI, PIC ICS, CSI, SIC IDB, DBI, BID IDC, DCI, CID IDEN, DENI, ENID, NIDE IDF, DFI, FID IDL, DLI, LID IDM, DMI, MID IDN, DNI, NID IDO, DOI, OID IDOL, DOLI, OLID, LIDO IDP, DPI, PID IDS, DSI, SID IER, ERI, RIE IFR, FRI, RIF IGP, GPI, PIG ILA, LAI, AIL ILAN, LANI, ANIL, NILA ILO, LOI, OIL ILS, LSI, SIL IMA, MAI, AIM IMC, MCI, CIM IMD, MDI, DIM IMS, MSI, SIM IMT, MTI, TIM IND, NDI, DIN INE, NEI, EIN INH, NHI, HIN IOC, OCI, CIO IOR, ORI, RIO IPC, PCI, CIP IPH, PHI, HIP IPL, PLI, LIP IPR, PRI, RIP IPS, PSI, SIP IPT, PTI, TIP IRA, RAI, AIR IRC, RCI, CIR IRE, REI, EIR IRM, RMI, MIR IRO, ROI, OIR ISA, SAI, AIS ISAR, SARI, ARIS, RISA ISC, SCI, CIS ISE, SEI, EIS ISH, SHI, HIS ISIS, SISI ISM, SMI, MIS ISS, SSI, SIS IST, STI, TIS ITA, TAI, AIT ITAL, TALI, ALIT, LITA ITD, TDI, DIT ITO, TOI, OIT ITS, TSI, SIT ITU, TUI, UIT IUD, UDI, DIU IXM, XMI, MIX KAS, ASK, SKA KEA, EAK, AKE KEE, EEK, EKE KHA, HAK, AKH KOA, OAK, AKO KTS, TSK, SKT KUS, USK, SKU LAB, ABL, BLA LAF, AFL, FLA LAI, AIL, ILA LAME, AMEL, MELA, ELAM LANI, ANIL, NILA, ILAN LAO, AOL, OLA LAP, APL, PLA LASE, ASEL, SELA, ELAS LAU, AUL, ULA LBL, BLL, LLB LCA, CAL, ALC LCM, CML, MLC LCP, CPL, PLC LCR, CRL, RLC LCS, CSL, SLC LDL, DLL, LLD LEA, EAL, ALE LEC, ECL, CLE LEE, EEL, ELE LENO, ENOL, NOLE, OLEN LER, ERL, RLE LES, ESL, SLE LGA, GAL, ALG LIA, IAL, ALI LID, IDL, DLI LIDO, IDOL, DOLI, OLID LIP, IPL, PLI LITA, ITAL, TALI, ALIT LLB, LBL, BLL LLD, LDL, DLL LLP, LPL, PLL LME, MEL, ELM LOB, OBL, BLO LOI, OIL, ILO LOT, OTL, TLO LPL, PLL, LLP LPP, PPL, PLP LPS, PSL, SLP LRC, RCL, CLR LRS, RSL, SLR LSD, SDL, DLS LSE, SEL, ELS LSI, SIL, ILS LSM, SML, MLS LSP, SPL, PLS LTA, TAL, ALT LUC, UCL, CLU LYC, YCL, CLY MAA, AAM, AMA MAB, ABM, BMA MAC, ACM, CMA MAD, ADM, DMA MAI, AIM, IMA MANA, ANAM, NAMA, AMAN MAP, APM, PMA MAR, ARM, RMA MARA, ARAM, RAMA, AMAR MAS, ASM, SMA MAT, ATM, TMA MAU, AUM, UMA MAY, AYM, YMA MBA, BAM, AMB MBO, BOM, OMB MCA, CAM, AMC MCC, CCM, CMC MCF, CFM, FMC MCG, CGM, GMC MCH, CHM, HMC MCI, CIM, IMC MCN, CNM, NMC MCP, CPM, PMC MCS, CSM, SMC MDC, DCM, CMD MDI, DIM, IMD MDS, DSM, SMD MEA, EAM, AME MED, EDM, DME MEE, EEM, EME MEL, ELM, LME MELA, ELAM, LAME, AMEL MEM, EMM, MME MENA, ENAM, NAME, AMEN MEO, EOM, OME MES, ESM, SME MGB, GBM, BMG MIA, IAM, AMI MIB, IBM, BMI MIC, ICM, CMI MID, IDM, DMI MIR, IRM, RMI MIS, ISM, SMI MIX, IXM, XMI MLC, LCM, CML MLS, LSM, SML MME, MEM, EMM MMS, MSM, SMM MMU, MUM, UMM MOA, OAM, AMO MOP, OPM, PMO MORA, ORAM, RAMO, AMOR MORO, OROM, ROMO, OMOR MOT, OTM, TMO MPA, PAM, AMP MPB, PBM, BMP MPE, PEM, EMP MPH, PHM, HMP MPS, PSM, SMP MRA, RAM, AMR MRE, REM, EMR MRS, RSM, SMR MSA, SAM, AMS MSC, SCM, CMS MSD, SDM, DMS MSE, SEM, EMS MSF, SFM, FMS MSH, SHM, HMS MSI, SIM, IMS MSM, SMM, MMS MSN, SNM, NMS MSO, SOM, OMS MSR, SRM, RMS MSS, SSM, SMS MST, STM, TMS MTA, TAM, AMT MTC, TCM, CMT MTD, TDM, DMT MTH, THM, HMT MTI, TIM, IMT MTP, TPM, PMT MTS, TSM, SMT MTU, TUM, UMT MUA, UAM, AMU MUM, UMM, MMU MVD, VDM, DMV MVO, VOM, OMV MYA, YAM, AMY NAD, ADN, DNA NAMA, AMAN, MANA, ANAM NAME, AMEN, MENA, ENAM NANA, ANAN NAR, ARN, RNA NAS, ASN, SNA NAU, AUN, UNA NCA, CAN, ANC NCD, CDN, DNC NCE, CEN, ENC NCO, CON, ONC NDA, DAN, AND NDE, DEN, END NDI, DIN, IND NEA, EAN, ANE NEE, EEN, ENE NEI, EIN, INE NEO, EON, ONE NEY, EYN, YNE NGA, GAN, ANG NGO, GON, ONG NHA, HAN, ANH NHI, HIN, INH NIA, IAN, ANI NID, IDN, DNI NIDE, IDEN, DENI, ENID NILA, ILAN, LANI, ANIL NMC, MCN, CNM NMS, MSN, SNM NOLE, OLEN, LENO, ENOL NOO, OON, ONO NPP, PPN, PNP NRC, RCN, CNR NRO, RON, ONR NSA, SAN, ANS NSE, SEN, ENS NSO, SON, ONS NSU, SUN, UNS NTO, TON, ONT NUS, USN, SNU NYA, YAN, ANY OAD, ADO, DOA OAK, AKO, KOA OAM, AMO, MOA OAP, APO, POA OAR, ARO, ROA OAT, ATO, TOA OBA, BAO, AOB OBL, BLO, LOB OBO, BOO, OOB OBS, BSO, SOB OBY, BYO, YOB OCD, CDO, DOC OCH, CHO, HOC OCI, CIO, IOC OCR, CRO, ROC OCS, CSO, SOC OCT, CTO, TOC ODS, DSO, SOD ODZ, DZO, ZOD OED, EDO, DOE OES, ESO, SOE OFO, FOO, OOF OGT, GTO, TOG OHO, HOO, OOH OHP, HPO, POH OID, IDO, DOI OIL, ILO, LOI OIR, IRO, ROI OIT, ITO, TOI OLA, LAO, AOL OLEN, LENO, ENOL, NOLE OLID, LIDO, IDOL, DOLI OMB, MBO, BOM OME, MEO, EOM OMOR, MORO, OROM, ROMO OMS, MSO, SOM OMV, MVO, VOM ONC, NCO, CON ONE, NEO, EON ONG, NGO, GON ONO, NOO, OON ONR, NRO, RON ONS, NSO, SON ONT, NTO, TON OOB, OBO, BOO OOF, OFO, FOO OOH, OHO, HOO OON, ONO, NOO OOS, OSO, SOO OOT, OTO, TOO OPA, PAO, AOP OPC, PCO, COP OPES, PESO, ESOP, SOPE OPH, PHO, HOP OPM, PMO, MOP OPS, PSO, SOP OPT, PTO, TOP ORA, RAO, AOR ORAM, RAMO, AMOR, MORA ORC, RCO, COR OREG, REGO, EGOR, GORE ORI, RIO, IOR OROM, ROMO, OMOR, MORO OSA, SAO, AOS OSC, SCO, COS OSD, SDO, DOS OSF, SFO, FOS OSO, SOO, OOS OSS, SSO, SOS OTB, TBO, BOT OTL, TLO, LOT OTM, TMO, MOT OTO, TOO, OOT OTR, TRO, ROT OTS, TSO, SOT OUD, UDO, DOU OUF, UFO, FOU OUS, USO, SOU OYS, YSO, SOY PAC, ACP, CPA PAD, ADP, DPA PAM, AMP, MPA PAO, AOP, OPA PAP, APP, PPA PAS, ASP, SPA PBM, BMP, MPB PCA, CAP, APC PCC, CCP, CPC PCF, CFP, FPC PCI, CIP, IPC PCO, COP, OPC PCS, CSP, SPC PDE, DEP, EPD PDP, DPP, PPD PDS, DSP, SPD PDT, DTP, TPD PED, EDP, DPE PEG, EGP, GPE PEM, EMP, MPE PEP, EPP, PPE PES, ESP, SPE PESO, ESOP, SOPE, OPES PGA, GAP, APG PHA, HAP, APH PHI, HIP, IPH PHM, HMP, MPH PHO, HOP, OPH PIC, ICP, CPI PID, IDP, DPI PIG, IGP, GPI PLA, LAP, APL PLC, LCP, CPL PLI, LIP, IPL PLL, LLP, LPL PLP, LPP, PPL PLS, LSP, SPL PMA, MAP, APM PMC, MCP, CPM PMO, MOP, OPM PMT, MTP, TPM PNP, NPP, PPN POA, OAP, APO POH, OHP, HPO PPA, PAP, APP PPD, PDP, DPP PPE, PEP, EPP PPL, PLP, LPP PPN, PNP, NPP PPS, PSP, SPP PRA, RAP, APR PRC, RCP, CPR PRI, RIP, IPR PSA, SAP, APS PSC, SCP, CPS PSE, SEP, EPS PSG, SGP, GPS PSI, SIP, IPS PSL, SLP, LPS PSM, SMP, MPS PSO, SOP, OPS PSP, SPP, PPS PSR, SRP, RPS PSS, SSP, SPS PST, STP, TPS PSU, SUP, UPS PTA, TAP, APT PTI, TIP, IPT PTO, TOP, OPT PTS, TSP, SPT PTT, TTP, TPT PUS, USP, SPU RAB, ABR, BRA RADA, ADAR, DARA, ARAD RAE, AER, ERA RAF, AFR, FRA RAG, AGR, GRA RAI, AIR, IRA RAM, AMR, MRA RAMA, AMAR, MARA, ARAM RAMO, AMOR, MORA, ORAM RAO, AOR, ORA RAP, APR, PRA RARA, ARAR RAS, ASR, SRA RASA, ASAR, SARA, ARAS RASE, ASER, SERA, ERAS RAT, ATR, TRA RBC, BCR, CRB RBE, BER, ERB RCA, CAR, ARC RCB, CBR, BRC RCC, CCR, CRC RCF, CFR, FRC RCI, CIR, IRC RCL, CLR, LRC RCN, CNR, NRC RCO, COR, ORC RCP, CPR, PRC RCS, CSR, SRC RCU, CUR, URC RDA, DAR, ARD RDS, DSR, SRD REA, EAR, ARE REC, ECR, CRE REE, EER, ERE REGO, EGOR, GORE, OREG REH, EHR, HRE REI, EIR, IRE REM, EMR, MRE RFA, FAR, ARF RFE, FER, ERF RIE, IER, ERI RIF, IFR, FRI RIO, IOR, ORI RIP, IPR, PRI RISA, ISAR, SARI, ARIS RLC, LCR, CRL RLE, LER, ERL RMA, MAR, ARM RMI, MIR, IRM RMS, MSR, SRM RNA, NAR, ARN ROA, OAR, ARO ROC, OCR, CRO ROI, OIR, IRO ROMO, OMOR, MORO, OROM RON, ONR, NRO ROT, OTR, TRO RPS, PSR, SRP RSA, SAR, ARS RSC, SCR, CRS RSE, SER, ERS RSH, SHR, HRS RSL, SLR, LRS RSM, SMR, MRS RSS, SSR, SRS RSU, SUR, URS RSV, SVR, VRS RTA, TAR, ART RTC, TCR, CRT RTE, TER, ERT RTF, TFR, FRT RUA, UAR, ARU RUC, UCR, CRU RUD, UDR, DRU RYA, YAR, ARY RYE, YER, ERY SAA, AAS, ASA SAB, ABS, BSA SAC, ACS, CSA SAD, ADS, DSA SAE, AES, ESA SAG, AGS, GSA SAI, AIS, ISA SAM, AMS, MSA SAN, ANS, NSA SAO, AOS, OSA SAP, APS, PSA SAR, ARS, RSA SARA, ARAS, RASA, ASAR SARI, ARIS, RISA, ISAR SAS, ASS, SSA SAU, AUS, USA SBA, BAS, ASB SBC, BCS, CSB SBE, BES, ESB SBS, BSS, SSB SBU, BUS, USB SCA, CAS, ASC SCB, CBS, BSC SCC, CCS, CSC SCD, CDS, DSC SCH, CHS, HSC SCI, CIS, ISC SCM, CMS, MSC SCO, COS, OSC SCP, CPS, PSC SCR, CRS, RSC SCS, CSS, SSC SDB, DBS, BSD SDD, DDS, DSD SDL, DLS, LSD SDM, DMS, MSD SDO, DOS, OSD SDS, DSS, SSD SEA, EAS, ASE SEC, ECS, CSE SED, EDS, DSE SEI, EIS, ISE SEL, ELS, LSE SELA, ELAS, LASE, ASEL SEM, EMS, MSE SEN, ENS, NSE SEP, EPS, PSE SER, ERS, RSE SERA, ERAS, RASE, ASER SES, ESS, SSE SET, ETS, TSE SFC, FCS, CSF SFM, FMS, MSF SFO, FOS, OSF SGP, GPS, PSG SHA, HAS, ASH SHE, HES, ESH SHF, HFS, FSH SHI, HIS, ISH SHM, HMS, MSH SHR, HRS, RSH SHT, HTS, TSH SHU, HUS, USH SIA, IAS, ASI SIC, ICS, CSI SID, IDS, DSI SIL, ILS, LSI SIM, IMS, MSI SIP, IPS, PSI SIS, ISS, SSI SISI, ISIS SIT, ITS, TSI SKA, KAS, ASK SKT, KTS, TSK SKU, KUS, USK SLC, LCS, CSL SLE, LES, ESL SLP, LPS, PSL SLR, LRS, RSL SMA, MAS, ASM SMC, MCS, CSM SMD, MDS, DSM SME, MES, ESM SMI, MIS, ISM SML, MLS, LSM SMM, MMS, MSM SMP, MPS, PSM SMR, MRS, RSM SMS, MSS, SSM SMT, MTS, TSM SNA, NAS, ASN SNM, NMS, MSN SNU, NUS, USN SOB, OBS, BSO SOC, OCS, CSO SOD, ODS, DSO SOE, OES, ESO SOM, OMS, MSO SON, ONS, NSO SOO, OOS, OSO SOP, OPS, PSO SOPE, OPES, PESO, ESOP SOS, OSS, SSO SOT, OTS, TSO SOU, OUS, USO SOY, OYS, YSO SPA, PAS, ASP SPC, PCS, CSP SPD, PDS, DSP SPE, PES, ESP SPL, PLS, LSP SPP, PPS, PSP SPS, PSS, SSP SPT, PTS, TSP SPU, PUS, USP SRA, RAS, ASR SRC, RCS, CSR SRD, RDS, DSR SRM, RMS, MSR SRP, RPS, PSR SRS, RSS, SSR SSA, SAS, ASS SSB, SBS, BSS SSC, SCS, CSS SSD, SDS, DSS SSE, SES, ESS SSI, SIS, ISS SSM, SMS, MSS SSO, SOS, OSS SSP, SPS, PSS SSR, SRS, RSS SST, STS, TSS SSU, SUS, USS STA, TAS, AST STB, TBS, BST STC, TCS, CST STE, TES, EST STI, TIS, IST STM, TMS, MST STP, TPS, PST STS, TSS, SST SUD, UDS, DSU SUF, UFS, FSU SUH, UHS, HSU SUN, UNS, NSU SUP, UPS, PSU SUR, URS, RSU SUS, USS, SSU SVR, VRS, RSV SWA, WAS, ASW SWB, WBS, BSW TAC, ACT, CTA TAE, AET, ETA TAG, AGT, GTA TAI, AIT, ITA TAL, ALT, LTA TALI, ALIT, LITA, ITAL TAM, AMT, MTA TAP, APT, PTA TAR, ART, RTA TAS, AST, STA TBA, BAT, ATB TBD, BDT, DTB TBO, BOT, OTB TBS, BST, STB TCA, CAT, ATC TCC, CCT, CTC TCM, CMT, MTC TCR, CRT, RTC TCS, CST, STC TCT, CTT, TTC TDC, DCT, CTD TDD, DDT, DTD TDE, DET, ETD TDI, DIT, ITD TDM, DMT, MTD TEA, EAT, ATE TEC, ECT, CTE TED, EDT, DTE TEF, EFT, FTE TER, ERT, RTE TES, EST, STE TFC, FCT, CTF TFR, FRT, RTF TGC, GCT, CTG THA, HAT, ATH THE, HET, ETH THE, HET, ETH THM, HMT, MTH TIM, IMT, MTI TIP, IPT, PTI TIS, IST, STI TLO, LOT, OTL TMA, MAT, ATM TMO, MOT, OTM TMS, MST, STM TOA, OAT, ATO TOC, OCT, CTO TOG, OGT, GTO TOI, OIT, ITO TON, ONT, NTO TOO, OOT, OTO TOP, OPT, PTO TPD, PDT, DTP TPM, PMT, MTP TPS, PST, STP TPT, PTT, TTP TRA, RAT, ATR TRO, ROT, OTR TSE, SET, ETS TSH, SHT, HTS TSI, SIT, ITS TSK, SKT, KTS TSM, SMT, MTS TSO, SOT, OTS TSP, SPT, PTS TSS, SST, STS TTC, TCT, CTT TTP, TPT, PTT TUI, UIT, ITU TUM, UMT, MTU TVA, VAT, ATV TYE, YET, ETY UAM, AMU, MUA UAR, ARU, RUA UCA, CAU, AUC UCD, CDU, DUC UCL, CLU, LUC UCR, CRU, RUC UDA, DAU, AUD UDI, DIU, IUD UDO, DOU, OUD UDR, DRU, RUD UDS, DSU, SUD UEC, ECU, CUE UFO, FOU, OUF UFS, FSU, SUF UHS, HSU, SUH UIT, ITU, TUI ULA, LAU, AUL UMA, MAU, AUM UMM, MMU, MUM UMT, MTU, TUM UNA, NAU, AUN UNS, NSU, SUN UPS, PSU, SUP URC, RCU, CUR URS, RSU, SUR USA, SAU, AUS USB, SBU, BUS USH, SHU, HUS USK, SKU, KUS USN, SNU, NUS USO, SOU, OUS USP, SPU, PUS USS, SSU, SUS VAB, ABV, BVA VAC, ACV, CVA VAT, ATV, TVA VDM, DMV, MVD VGA, GAV, AVG VOM, OMV, MVO VRS, RSV, SVR WAC, ACW, CWA WAS, ASW, SWA WBS, BSW, SWB WCC, CCW, CWC XMI, MIX, IXM YAM, AMY, MYA YAN, ANY, NYA YAR, ARY, RYA YCL, CLY, LYC YED, EDY, DYE YER, ERY, RYE YET, ETY, TYE YHA, HAY, AYH YMA, MAY, AYM YNE, NEY, EYN YOB, OBY, BYO YSO, SOY, OYS ZOD, ODZ, DZO
Lychen
Lychen is V8 JavaScript wrapped in C#, exposing C# into JavaScript.
<lang javascript> const wc = new CS.System.Net.WebClient(); const lines = wc.DownloadString("https://raw.githubusercontent.com/dwyl/english-words/master/words.txt"); const words = lines.split(/\n/g); const collection = {}; words.filter(word => word.length > 2).forEach(word => {
const theword = word.toLowerCase(); let allok = true; let newword = theword; for (let i = 0; i < word.length - 1; i++) { newword = newword.substr(1) + newword.substr(0, 1); if (!words.includes(newword)) { allok = false; break; } } if (allok) { var key = theword.split("").sort().join(""); if (!collection[key]) { collection[key] = [theword]; } else { if (!collections[key].includes(theword)) { collection[key].push(theword); } } }
}); Object.keys(collection) .filter(key => collection[key].length > 1) .forEach(key => console.log("%s", collection[key].join(", "))); </lang>
arar, rara ary, yar, rya ate, eat, tea eth, het, the, the