Abbreviations, automatic: Difference between revisions

m
addded scrolling output
(JavaScript added)
m (addded scrolling output)
 
(43 intermediate revisions by 26 users not shown)
Line 141:
{{trans|Python}}
 
<langsyntaxhighlight lang="11l">F shortest_abbreviation_length(line, list_size)
V words = line.split(‘ ’)
V word_count = words.len
I word_count != list_size
X.throw ValueError(‘Not enough entries, expected #. found #.’.format(list_size, word_count))
 
V abbreviation_length = 1
Line 162:
print()
 
automatic_abbreviations(‘daysOfWeek.txt’, 7)</langsyntaxhighlight>
 
{{out}}
Line 269:
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B version Buster 64 bits}}
<syntaxhighlight lang="aarch64 assembly">
<lang AArch64 Assembly>
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program abbrAuto64.s */
Line 743:
.include "../includeARM64.inc"
 
</syntaxhighlight>
</lang>
<pre>
Nom du fichier : listDays.txt
Line 845:
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|Ada}}==
<syntaxhighlight lang="ada">with Ada.Containers.Indefinite_Vectors;
with Ada.Strings.Fixed;
with Ada.Strings.Maps;
with Ada.Text_IO;
 
procedure Abbreviations is
 
package String_Vectors is
new Ada.Containers.Indefinite_Vectors (Index_Type => Positive,
Element_Type => String);
use Ada.Text_IO, String_Vectors;
 
function Split (Line : String) return Vector is
Result : Vector;
First : Natural;
Last : Natural := Line'First - 1;
begin
while Last + 1 in Line'Range loop
Ada.Strings.Fixed.Find_Token
(Line, Ada.Strings.Maps.To_Set (" "), Last + 1,
Ada.Strings.Outside, First, Last);
exit when Last = 0;
Append (Result, Line (First .. Last));
end loop;
return Result;
end Split;
 
function Abbrev_Length (Items : Vector) return Natural is
use type Ada.Containers.Count_Type;
Max : Natural := 0;
Abbrevs : Vector;
begin
for Item of Items loop
Max := Natural'Max (Max, Item'Length);
end loop;
 
for Length in 1 .. Max loop
Abbrevs := Empty_Vector;
for Item of Items loop
declare
Last : constant Natural
:= Natural'Min (Item'Last, Item'First + Length - 1);
 
Abbrev : String renames Item (Item'First .. Last);
begin
exit when Abbrevs.Contains (Abbrev);
Abbrevs.Append (Abbrev);
end;
end loop;
if Abbrevs.Length = Items.Length then
return Length;
end if;
end loop;
return 0;
end Abbrev_Length;
 
procedure Process (Line : String) is
package Natural_IO is new Ada.Text_IO.Integer_IO (Natural);
Words : constant Vector := Split (Line);
Length : constant Natural := Abbrev_Length (Words);
begin
Natural_IO.Put (Length, Width => 2);
Put (" ");
Put_Line (Line);
end Process;
 
begin
while not End_Of_File loop
Process (Get_Line);
end loop;
end Abbreviations;</syntaxhighlight>
{{out}}
<pre style="height: 20ex;">
% ./abbreviations <days-of-week.txt
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
2 Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
4 E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
2 Ehud Segno Maksegno Erob Hamus Arbe Kedame
5 Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
4 Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat
2 domingu llunes martes miércoles xueves vienres sábadu
2 Bazar_gÜnÜ Birinci_gÜn Çkinci_gÜn ÜçÜncÜ_gÜn DÖrdÜncÜ_gÜn Bes,inci_gÜn Altòncò_gÜn
6 Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat
4 Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar
2 Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota
5 Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn
2 nedelia ponedelnik vtornik sriada chetvartak petak sabota
12 sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk
4 Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte
16 Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_nah_kay_dzeeneh Tah_neesee_dzeehn_neh Deehn_ghee_dzee-neh Tl-oowey_tts-el_dehlee Dzeentt-ahzee
6 dy_Sul dy_Lun dy_Meurth dy_Mergher dy_You dy_Gwener dy_Sadorn
2 Dimanch Lendi Madi Mèkredi Jedi Vandredi Samdi
2 nedjelja ponedjeljak utorak srijeda cxetvrtak petak subota
2 nede^le ponde^lí úterÿ str^eda c^tvrtek pátek sobota
2 Sondee Mondee Tiisiday Walansedee TOOsedee Feraadee Satadee
2 s0ndag mandag tirsdag onsdag torsdag fredag l0rdag
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 Diman^co Lundo Mardo Merkredo ^Jaùdo Vendredo Sabato
1 pÜhapäev esmaspäev teisipäev kolmapäev neljapäev reede laupäev
0
7 Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata
2 sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur
2 Yek_Sham'beh Do_Sham'beh Seh_Sham'beh Cha'har_Sham'beh Panj_Sham'beh Jom'eh Sham'beh
2 sunnuntai maanantai tiistai keskiviiko torsktai perjantai lauantai
2 dimanche lundi mardi mercredi jeudi vendredi samedi
4 Snein Moandei Tiisdei Woansdei Tonersdei Freed Sneon
2 Domingo Segunda_feira Martes Mércores Joves Venres Sábado
2 k'vira orshabati samshabati otkhshabati khutshabati p'arask'evi shabati
2 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
2 Kiriaki' Defte'ra Tri'ti Teta'rti Pe'mpti Paraskebi' Sa'bato
3 ravivaar somvaar mangalvaar budhvaar guruvaar shukravaar shanivaar
7 pópule pó`akahi pó`alua pó`akolu pó`ahá pó`alima pó`aono
7 Yom_rishon Yom_sheni Yom_shlishi Yom_revi'i Yom_chamishi Yom_shishi Shabat
3 ravivara somavar mangalavar budhavara brahaspativar shukravara shanivar
3 vasárnap hétfö kedd szerda csütörtök péntek szombat
2 Sunnudagur Mánudagur ╞riδjudagur Miδvikudagar Fimmtudagur FÖstudagur Laugardagur
2 sundio lundio mardio merkurdio jovdio venerdio saturdio
3 Minggu Senin Selasa Rabu Kamis Jumat Sabtu
2 Dominica Lunedi Martedi Mercuridi Jovedi Venerdi Sabbato
5 Dé_Domhnaigh Dé_Luain Dé_Máirt Dé_Ceadaoin Dé_ardaoin Dé_hAoine Dé_Sathairn
2 domenica lunedí martedí mercoledí giovedí venerdí sabato
2 Nichiyou_bi Getzuyou_bi Kayou_bi Suiyou_bi Mokuyou_bi Kin'you_bi Doyou_bi
1 Il-yo-il Wol-yo-il Hwa-yo-il Su-yo-il Mok-yo-il Kum-yo-il To-yo-il
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
3 sve-tdien pirmdien otrdien tresvdien ceturtdien piektdien sestdien
2 Sekmadienis Pirmadienis Antradienis Trec^iadienis Ketvirtadienis Penktadienis S^es^tadienis
3 Wangu Kazooba Walumbe Mukasa Kiwanuka Nnagawonye Wamunyi
12 xing-_qi-_rì xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
3 Jedoonee Jelune Jemayrt Jecrean Jardaim Jeheiney Jesam
3 Jabot Manre Juje Wonje Taije Balaire Jarere
5 geminrongo minòmishi mártes mièrkoles misheushi bèrnashi mishábaro
2 Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu
2 sφndag mandag tirsdag onsdag torsdag fredag lφrdag
7 lo_dimenge lo_diluns lo_dimarç lo_dimèrcres lo_dijòus lo_divendres lo_dissabte
4 djadomingo djaluna djamars djarason djaweps djabièrna djasabra
2 Niedziela Poniedzial/ek Wtorek S,roda Czwartek Pia,tek Sobota
3 Domingo segunda-feire terça-feire quarta-feire quinta-feire sexta-feira såbado
1 Domingo Lunes martes Miercoles Jueves Viernes Sabado
2 Duminicª Luni Mart'i Miercuri Joi Vineri Sâmbªtª
2 voskresenie ponedelnik vtornik sreda chetverg pyatnitsa subbota
4 Sunday Di-luain Di-màirt Di-ciadain Di-ardaoin Di-haoine Di-sathurne
2 nedjelja ponedjeljak utorak sreda cxetvrtak petak subota
5 Sontaha Mmantaha Labobedi Laboraro Labone Labohlano Moqebelo
2 Iridha- Sandhudha- Anga.haruwa-dha- Badha-dha- Brahaspa.thindha- Sikura-dha- Sena.sura-dha-
2 nedel^a pondelok utorok streda s^tvrtok piatok sobota
2 Nedelja Ponedeljek Torek Sreda Cxetrtek Petek Sobota
2 domingo lunes martes miércoles jueves viernes sábado
2 sonde mundey tude-wroko dride-wroko fode-wroko freyda Saturday
7 Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi
2 söndag måndag tisdag onsdag torsdag fredag lordag
2 Linggo Lunes Martes Miyerkoles Huwebes Biyernes Sabado
7 Lé-pài-jít Pài-it Pài-jï Pài-sañ Pài-sì Pài-gÖ. Pài-lák
7 wan-ar-tit wan-tjan wan-ang-kaan wan-phoet wan-pha-ru-hat-sa-boh-die wan-sook wan-sao
5 Tshipi Mosupologo Labobedi Laboraro Labone Labotlhano Matlhatso
6 Pazar Pazartesi Sali Çar,samba Per,sembe Cuma Cumartesi
2 nedilya ponedilok vivtorok sereda chetver pyatnytsya subota
9 Chu?_Nhâ.t Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na'm Thú*_Sáu Thú*_Ba?y
6 dydd_Sul dyds_Llun dydd_Mawrth dyds_Mercher dydd_Iau dydd_Gwener dyds_Sadwrn
3 Dibeer Altine Talaata Allarba Al_xebes Aljuma Gaaw
7 iCawa uMvulo uLwesibini uLwesithathu uLuwesine uLwesihlanu uMgqibelo
2 zuntik montik dinstik mitvokh donershtik fraytik shabes
7 iSonto uMsombuluko uLwesibili uLwesithathu uLwesine uLwesihlanu uMgqibelo
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
15 Bazar_gÜnÜ Bazar_ærtæsi Çærs,ænbæ_axs,amò Çærs,ænbæ_gÜnÜ CÜmæ_axs,amò CÜmæ_gÜnÜ CÜmæ_Senbæ
2 Sun Moon Mars Mercury Jove Venus Saturn
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 KoseEraa GyoOraa BenEraa Kuoraa YOwaaraa FeEraa Memenaa
5 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Sonnabend
1 Domingo Luns Terza_feira Corta_feira Xoves Venres Sábado
7 Dies_Solis Dies_Lunae Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Sabbatum
12 xing-_qi-_tiàn xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|Amazing Hopper}}==
<syntaxhighlight lang="amazing hopper">
#include <jambo.h>
 
#define MAX_LINE 150
Main
Break on
days of week = 0, fd=0, length=0, days=0, temp=0
Open in("dias_de_la_semana.txt")( fd )
If ( Not( File error ) )
Loop if (Not (Eof(fd)) )
Using( MAX_LINE ), Split( Readlin(fd) » (days), days of week, " ")
 
Continue if( Zero( Length( days of week ) » (length) ) )
i=1
Loop
Let( temp := Ucase(Left( i, days of week )))
aSort(temp)
Break if ( Eq(Length(Unique(temp)), length ) )
++i
Back
 
Printnl( Cpad(" ",3,Str(i))," : ", Utf8(Ansi(days)) )
Back
Close(fd)
Else
Printnl("Error en archivo: ", ~Get str file error)
End If
End
</syntaxhighlight>
{{out}}
<pre>
$ hopper abreviatura.jambo
2 : Sunday Monday Tuesday Wednesday Thursday Friday Saturday
2 : Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
4 : E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
2 : Ehud Segno Maksegno Erob Hamus Arbe Kedame
5 : Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
</pre>
 
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi}}
<syntaxhighlight lang="arm assembly">
<lang ARM Assembly>
/* ARM assembly Raspberry PI */
/* program abbrAuto.s */
Line 1,270 ⟶ 1,487:
/***************************************************/
.include "../affichage.inc"
</syntaxhighlight>
</lang>
<pre>
Nom du fichier : listDays.txt
Line 1,372 ⟶ 1,589:
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|AutoHotkey}}==
<syntaxhighlight lang="autohotkey">AutoAbbreviations(line){
len := prev := 0
Days := StrSplit(line, " ")
loop % StrLen(Days.1)
{
obj := []
for j, day in Days
{
abb := SubStr(day, 1, len)
obj[abb] := (obj[abb] ? obj[abb] : 0) + 1
if (obj[abb] > 1)
{
len++
break
}
}
if (prev = len)
break
prev := len
}
return len
}</syntaxhighlight>
Examples:<syntaxhighlight lang="autohotkey">data := "
(
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
 
Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
Ehud Segno Maksegno Erob Hamus Arbe Kedame
Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
)"
 
for i, line in StrSplit(data, "`n", "`r")
{
line := RegExReplace(line, "\s+", " ")
len := AutoAbbreviations(line)
abbrev := ""
for j, day in StrSplit(line, " ")
abbrev .= SubStr(day, 1, len) " "
result .= len " > " abbrev "`n"
}
MsgBox % result
return</syntaxhighlight>
{{out}}
<pre>2 > Su Mo Tu We Th Fr Sa
0 >
2 > So Ma Di Wo Do Vr Sa
4 > E_dj E_hë E_ma E_më E_en E_pr E_sh
2 > Eh Se Ma Er Ha Ar Ke
5 > Al_Ah Al_It Al_Th Al_Ar Al_Ka Al_Go Al_Sa </pre>
 
'''Another solution could be:'''
<syntaxhighlight lang="autohotkey">
Loop, Read, days-of-the-week.txt ; input text in current dir
{
if (A_Index > 10) ; number of lines to output
break
Loop, Parse, A_LoopReadLine, %A_Space% ; create an array of the days
word%A_Index% := A_LoopField ; word1=sunday, word2=monday ...
loop
{
x := A_Index ;save the last loop index
abrev := ""
loop 7
abrev .= SubStr(word%A_Index%, 1, x) . "," ; x = length to test (1,2,3...)
sort, abrev, U D, ; sort unique (errorlevel = duplicates)
}
until ErrorLevel = 0 ;stay with last loop index (length)
minimalAb .= x . " " . A_LoopReadLine . " (" . abrev . ")`n"
}
msgbox % minimalAb
ExitApp
</syntaxhighlight>
{{Out}}
<pre>
Abbreviations Automatic.ahk
---------------------------
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday (Fr,Mo,Sa,Su,Th,Tu,We,)
2 Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag (Di,Do,Ma,Sa,So,Vr,Wo,)
4 E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë (E_dj,E_en,E_hÃ,E_ma,E_mÃ,E_pr,E_sh,)
2 Ehud Segno Maksegno Erob Hamus Arbe Kedame (Ar,Eh,Er,Ha,Ke,Ma,Se,)
5 Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit (Al_Ah,Al_Ar,Al_Go,Al_It,Al_Ka,Al_Sa,Al_Th,)
4 Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat (Guir,Hink,Ourp,Shap,Tcho,Yere,Yerg,)
2 domingu llunes martes miércoles xueves vienres sábadu (do,ll,ma,mi,sÃ,vi,xu,)
2 Bazar_gÃœnÃœ Birinci_gÃœn Çkinci_gÃœn ÜçÜncÃœ_gÃœn DÖrdÃœncÃœ_gÃœn Bes,inci_gÃœn Altòncò_gÃœn (Al,Ba,Be,Bi,DÃ,Ãœ,Ç,)
6 Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat (Astear,Asteaz,Astele,Igande,Larunb,Ostegu,Ostira,)
4 Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar (BRih,Budh,Mong,Robi,Shom,Shon,Shuk,)
---------------------------
OK
</pre>
 
=={{header|AWK}}==
<syntaxhighlight lang="awk">
<lang AWK>
# syntax: GAWK -f ABBREVIATIONS_AUTOMATIC.AWK ABBREVIATIONS_AUTOMATIC.TXT
{ dow_arr[NR] = $0 }
Line 1,406 ⟶ 1,715:
}
function max(x,y) { return((x > y) ? x : y) }
</syntaxhighlight>
</lang>
{{out}}
<pre style="height:45ex">
Line 1,509 ⟶ 1,818:
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|BQN}}==
File I/O works in [[CBQN]].
 
This is a recursive function which checks uniqueness of n length prefix, and returns the iteration where all are unique.
<pre>Split ← (⊢-˜+`׬)∘=⊔⊢
 
Abbrnum ← 1⊸{
𝕊⟨⟩:@;
((⊢≡⍷)𝕨↑¨𝕩)◶⟨(𝕨+1)⊸𝕊,𝕨⟩𝕩}
words ← ' ' Split¨ •FLines "abbrs.txt"
 
(•Show Abbrnum ≍○< ⊢)¨words
</pre>
<pre>⟨ 2 ⟨ "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" ⟩ ⟩
⟨ 2 ⟨ "Sondag" "Maandag" "Dinsdag" "Woensdag" "Donderdag" "Vrydag" "Saterdag" ⟩ ⟩
⟨ 4 ⟨ "E_djelë" "E_hënë" "E_martë" "E_mërkurë" "E_enjte" "E_premte" "E_shtunë" ⟩ ⟩
⟨ 2 ⟨ "Ehud" "Segno" "Maksegno" "Erob" "Hamus" "Arbe" "Kedame" ⟩ ⟩
⟨ 5 ⟨ "Al_Ahad" "Al_Ithinin" "Al_Tholatha'a" "Al_Arbia'a" "Al_Kamis" "Al_Gomia'a" "Al_Sabit" ⟩ ⟩
...</pre>
 
=={{header|C}}==
{{trans|C#}}
<langsyntaxhighlight lang="c">#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Line 1,606 ⟶ 1,935:
 
return 0;
}</langsyntaxhighlight>
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 1,709 ⟶ 2,038:
 
=={{header|C sharp|C#}}==
<langsyntaxhighlight lang="csharp">using System;
using System.Collections.Generic;
 
Line 1,760 ⟶ 2,089:
}
}
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 1,863 ⟶ 2,192:
=={{header|C++}}==
{{trans|C#}}
<langsyntaxhighlight lang="cpp">#include <iomanip>
#include <iostream>
#include <fstream>
Line 1,928 ⟶ 2,257:
 
return 0;
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,028 ⟶ 2,357:
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau</pre>
 
=={{header|COBOL}}==
{{works with|GnuCOBOL|3.1.2.0}}
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. AUTO-ABBREVIATIONS.
 
ENVIRONMENT DIVISION.
 
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT DOW ASSIGN TO "days-of-week.txt"
ORGANIZATION IS LINE SEQUENTIAL.
 
DATA DIVISION.
FILE SECTION.
FD DOW.
01 DOW-FILE PIC X(200).
 
WORKING-STORAGE SECTION. *> a.k.a. variables
01 DOW-LINE PIC X(200).
01 ENDO PIC 9(1).
01 ENDO2 PIC 9(1).
01 CURDAY PIC X(50).
01 ABPTR PIC 999.
01 LINE-NUM PIC 9(3) VALUE 1.
01 CHARAMT PIC 9(3) VALUE 1.
01 LARGESTCHARAMT PIC 9(3).
01 DAYNUM PIC 9(3) VALUE 1.
01 ABRESTART PIC 9(1).
01 CURABBR PIC X(50).
01 TMP1 PIC 9(3).
01 TMP2 PIC 9(3).
01 TINDEX PIC 9(3) VALUE 1.
01 ABBRLIST.
05 ABBRITEM PIC X(50) OCCURS 7 TIMES.
 
PROCEDURE DIVISION.
OPEN INPUT DOW.
PERFORM UNTIL ENDO = 1
READ DOW INTO DOW-LINE
AT END MOVE 1 TO ENDO
NOT AT END PERFORM
*> loop through each line
IF DOW-LINE = "" THEN
DISPLAY ""
ELSE
MOVE 0 TO ENDO2
MOVE 0 TO CHARAMT
 
PERFORM UNTIL ENDO2 > 0
MOVE 1 TO ABPTR
MOVE 1 TO DAYNUM
MOVE 0 TO ABRESTART
 
ADD 1 TO CHARAMT
 
*> reset the abbreviation table
MOVE 1 TO TINDEX
PERFORM 7 TIMES
MOVE SPACE TO ABBRITEM(TINDEX)
ADD 1 TO TINDEX
END-PERFORM
 
*> loop through each day
PERFORM 7 TIMES
UNSTRING DOW-LINE DELIMITED BY SPACE
INTO CURDAY
WITH POINTER ABPTR
END-UNSTRING
 
MOVE 0 TO TMP1
MOVE 0 TO TMP2
INSPECT CURDAY
TALLYING TMP1 FOR ALL CHARACTERS
INSPECT CURDAY
TALLYING TMP2 FOR ALL SPACE
SUBTRACT TMP2 FROM TMP1
IF TMP1 > LARGESTCHARAMT THEN
MOVE TMP1 TO LARGESTCHARAMT
END-IF
 
*> not enough days error
IF CURDAY = "" THEN
MOVE 3 TO ENDO2
END-IF
 
MOVE CURDAY(1:CHARAMT) TO CURABBR
 
*> check if the current abbreviation is already taken
MOVE 1 TO TINDEX
PERFORM 7 TIMES
IF ABBRITEM(TINDEX) = CURABBR THEN
MOVE 1 TO ABRESTART
END-IF
ADD 1 TO TINDEX
END-PERFORM
 
MOVE CURABBR TO ABBRITEM(DAYNUM)
 
ADD 1 TO DAYNUM
 
END-PERFORM
 
IF ABRESTART = 0 THEN
MOVE 1 TO ENDO2
END-IF
 
*> identical days error
IF CHARAMT > LARGESTCHARAMT THEN
MOVE 2 TO ENDO2
END-IF
 
END-PERFORM
 
DISPLAY "Line " LINE-NUM ": " WITH NO ADVANCING
 
IF ENDO2 = 3 THEN
DISPLAY "Error: not enough " WITH NO ADVANCING
DISPLAY "days"
ELSE IF ENDO2 = 2 THEN
DISPLAY "Error: identical " WITH NO ADVANCING
DISPLAY "days"
ELSE
DISPLAY CHARAMT ": " WITH NO ADVANCING
 
*> loop through each day and display its abbreviation
MOVE 1 TO TINDEX
PERFORM 7 TIMES
MOVE ABBRITEM(TINDEX) TO CURABBR
 
MOVE 0 TO TMP1
MOVE 0 TO TMP2
INSPECT CURABBR
TALLYING TMP1 FOR ALL CHARACTERS
INSPECT CURABBR
TALLYING TMP2 FOR TRAILING SPACES
SUBTRACT TMP2 FROM TMP1
 
DISPLAY CURABBR(1:TMP1) WITH NO ADVANCING
DISPLAY "." WITH NO ADVANCING
 
IF TINDEX < 7 THEN
DISPLAY SPACE WITH NO ADVANCING
ELSE
DISPLAY X"0a" WITH NO ADVANCING *> go to next line
END-IF
 
ADD 1 TO TINDEX
END-PERFORM
END-IF
 
END-IF
 
END-PERFORM
END-READ
 
ADD 1 TO LINE-NUM
END-PERFORM.
CLOSE DOW.
STOP RUN.
</syntaxhighlight>
{{out}}
<pre style="height:45ex">
auto-abbreviations.cbl:42: warning: alphanumeric literal has zero length; a SPACE will be assumed [-Wothers]
auto-abbreviations.cbl:43: warning: alphanumeric literal has zero length; a SPACE will be assumed [-Wothers]
auto-abbreviations.cbl:81: warning: alphanumeric literal has zero length; a SPACE will be assumed [-Wothers]
Line 001: 002: Su. Mo. Tu. We. Th. Fr. Sa.
Line 002: 002: So. Ma. Di. Wo. Do. Vr. Sa.
Line 003: 004: E_dj. E_h?. E_ma. E_m?. E_en. E_pr. E_sh.
Line 004: 002: Eh. Se. Ma. Er. Ha. Ar. Ke.
Line 005: 005: Al_Ah. Al_It. Al_Th. Al_Ar. Al_Ka. Al_Go. Al_Sa.
Line 006: 004: Guir. Yerg. Yere. Tcho. Hink. Ourp. Shap.
Line 007: 002: do. ll. ma. mi. xu. vi. s?.
Line 008: 002: Ba. Bi. Ç. Ü. D?. Be. Al.
Line 009: 006: Igande. Astele. Astear. Asteaz. Ostegu. Ostira. Larunb.
Line 010: 004: Robi. Shom. Mong. Budh. BRih. Shuk. Shon.
Line 011: 002: Ne. Po. Ut. Sr. Cx. Pe. Su.
Line 012: 005: Disul. Dilun. Dimeu. Dimer. Diria. Digwe. Disad.
Line 013: 002: ne. po. vt. sr. ch. pe. sa.
Line 014: 012: sing_kei_yah. sing_kei_yat. sing_kei_yee. sing_kei_saa. sing_kei_sie. sing_kei_ng. sing_kei_luk.
Line 015: 004: Dium. Dill. Dima. Dime. Dijo. Dive. Diss.
Line 016: 016: Dzeenkk-eh. Dzeehn_kk-ehreh. Dzeehn_kk-ehreh_. Tah_neesee_dzeeh. Deehn_ghee_dzee-. Tl-oowey_tts-el_. Dzeentt-ahzee.
Line 017: 006: dy_Sul. dy_Lun. dy_Meu. dy_Mer. dy_You. dy_Gwe. dy_Sad.
Line 018: 002: Di. Le. Ma. M?. Je. Va. Sa.
Line 019: 002: ne. po. ut. sr. cx. pe. su.
Line 020: 002: ne. po. ú. st. c^. p?. so.
Line 021: 002: So. Mo. Ti. Wa. TO. Fe. Sa.
Line 022: 002: s0. ma. ti. on. to. fr. l0.
Line 023: 002: zo. ma. di. wo. do. vr. za.
Line 024: 002: Di. Lu. Ma. Me. ^J. Ve. Sa.
Line 025: 001: p. e. t. k. n. r. l.
Line 027: 007: Diu_pri. Diu_seq. Diu_tri. Diu_qua. Diu_qui. Diu_sex. Diu_sab.
Line 028: 002: su. m?. t?. mi. h?. fr. le.
Line 029: 002: Ye. Do. Se. Ch. Pa. Jo. Sh.
Line 030: 002: su. ma. ti. ke. to. pe. la.
Line 031: 002: di. lu. ma. me. je. ve. sa.
Line 032: 004: Snei. Moan. Tiis. Woan. Tone. Free. Sneo.
Line 033: 002: Do. Se. Ma. M?. Jo. Ve. S?.
Line 034: 002: k'. or. sa. ot. kh. p'. sh.
Line 035: 002: So. Mo. Di. Mi. Do. Fr. Sa.
Line 036: 002: Ki. De. Tr. Te. Pe. Pa. Sa.
Line 037: 003: rav. som. man. bud. gur. shu. sha.
Line 038: 007: pópule. pó`aka. pó`alu. pó`ako. pó`ah?. pó`ali. pó`aon.
Line 039: 007: Yom_ris. Yom_she. Yom_shl. Yom_rev. Yom_cha. Yom_shi. Shabat.
Line 040: 003: rav. som. man. bud. bra. shu. sha.
Line 041: 003: vas. hé. ked. sze. cs?. pé. szo.
Line 042: 002: Su. M?. ?. Mi. Fi. F?. La.
Line 043: 002: su. lu. ma. me. jo. ve. sa.
Line 044: 003: Min. Sen. Sel. Rab. Kam. Jum. Sab.
Line 045: 002: Do. Lu. Ma. Me. Jo. Ve. Sa.
Line 046: 005: Dé_D. Dé_L. Dé_M. Dé_C. Dé_a. Dé_h. Dé_S.
Line 047: 002: do. lu. ma. me. gi. ve. sa.
Line 048: 002: Ni. Ge. Ka. Su. Mo. Ki. Do.
Line 049: 001: I. W. H. S. M. K. T.
Line 050: 007: Dies_Do. Dies_Lu. Dies_Ma. Dies_Me. Dies_Io. Dies_Ve. Dies_Sa.
Line 051: 003: sve. pir. otr. tre. cet. pie. ses.
Line 052: 002: Se. Pi. An. Tr. Ke. Pe. S^.
Line 053: 003: Wan. Kaz. Wal. Muk. Kiw. Nna. Wam.
Line 054: 012: xing-_qi-_r?. xing-_qi-_yi. xing-_qi-_è. xing-_qi-_sa. xing-_qi-_s?. xing-_qi-_wu. xing-_qi-_li.
Line 055: 003: Jed. Jel. Jem. Jec. Jar. Jeh. Jes.
Line 056: 003: Jab. Man. Juj. Won. Tai. Bal. Jar.
Line 057: 005: gemin. minò. márt. mièr. mishe. bèrn. mish?.
Line 058: 002: Ah. Is. Se. Ra. Kh. Ju. Sa.
Line 059: 002: s?. ma. ti. on. to. fr. l?.
Line 060: 007: lo_dime. lo_dilu. lo_dima. lo_dim?. lo_dij?. lo_dive. lo_diss.
Line 061: 004: djad. djal. djam. djar. djaw. djab. djas.
Line 062: 002: Ni. Po. Wt. S,. Cz. Pi. So.
Line 063: 003: Dom. seg. ter. qua. qui. sex. så.
Line 064: 001: D. L. m. M. J. V. S.
Line 065: 002: Du. Lu. Ma. Mi. Jo. Vi. S?.
Line 066: 002: vo. po. vt. sr. ch. py. su.
Line 067: 004: Sund. Di-l. Di-m. Di-c. Di-a. Di-h. Di-s.
Line 068: 002: ne. po. ut. sr. cx. pe. su.
Line 069: 005: Sonta. Mmant. Labob. Labor. Labon. Laboh. Moqeb.
Line 070: 002: Ir. Sa. An. Ba. Br. Si. Se.
Line 071: 002: ne. po. ut. st. s^. pi. so.
Line 072: 002: Ne. Po. To. Sr. Cx. Pe. So.
Line 073: 002: do. lu. ma. mi. ju. vi. s?.
Line 074: 002: so. mu. tu. dr. fo. fr. Sa.
Line 075: 007: Jumapil. Jumatat. Jumanne. Jumatan. Alhamis. Ijumaa. Jumamos.
Line 076: 002: s?. m?. ti. on. to. fr. lo.
Line 077: 002: Li. Lu. Ma. Mi. Hu. Bi. Sa.
Line 078: 007: Lé-pà. Pài-it. Pài-j?. Pài-sa. Pài-s?. Pài-g?. Pài-l?.
Line 079: 007: wan-ar-. wan-tja. wan-ang. wan-pho. wan-pha. wan-soo. wan-sao.
Line 080: 005: Tship. Mosup. Labob. Labor. Labon. Labot. Matlh.
Line 081: 006: Pazar. Pazart. Sali. Çar,s. Per,se. Cuma. Cumart.
Line 082: 002: ne. po. vi. se. ch. py. su.
Line 083: 009: Chu?_Nhâ. Thú*_Hai. Thú*_Ba. Thú*_Tu*. Thú*_Na'. Thú*_Sá. Thú*_Ba?.
Line 084: 006: dydd_S. dyds_L. dydd_M. dyds_M. dydd_I. dydd_G. dyds_S.
Line 085: 003: Dib. Alt. Tal. All. Al_. Alj. Gaa.
Line 086: 007: iCawa. uMvulo. uLwesib. uLwesit. uLuwesi. uLwesih. uMgqibe.
Line 087: 002: zu. mo. di. mi. do. fr. sh.
Line 088: 007: iSonto. uMsombu. uLwesib. uLwesit. uLwesin. uLwesih. uMgqibe.
Line 089: 007: Dies_Do. Dies_Lu. Dies_Ma. Dies_Me. Dies_Io. Dies_Ve. Dies_Sa.
Line 090: 015: Bazar_gÜnÜ. Bazar_ærtæsi. Çærs,ænbæ_a. Çærs,ænbæ_g. CÜmæ_axs,amò. CÜmæ_gÜnÜ. CÜmæ_Senbæ.
Line 091: 002: Su. Mo. Ma. Me. Jo. Ve. Sa.
Line 092: 002: zo. ma. di. wo. do. vr. za.
Line 093: 002: Ko. Gy. Be. Ku. YO. Fe. Me.
Line 094: 005: Sonnt. Monta. Diens. Mittw. Donne. Freit. Sonna.
Line 095: 001: D. L. T. C. X. V. S.
Line 096: 007: Dies_So. Dies_Lu. Dies_Ma. Dies_Me. Dies_Io. Dies_Ve. Dies_Sa.
Line 097: 012: xing-_qi-_ti. xing-_qi-_yi. xing-_qi-_è. xing-_qi-_sa. xing-_qi-_s?. xing-_qi-_wu. xing-_qi-_li.
Line 098: 004: djad. djal. djam. djar. djaw. djab. djas.
Line 099: 002: Ki. At. Qu. Il. Ch. Ku. In.
</pre>
 
=={{header|Common Lisp}}==
It uses the standard library split-sequence to split the string into words.
<langsyntaxhighlight lang="lisp">
(defun max-mismatch (list)
(if (cdr list)
Line 2,041 ⟶ 2,637:
((null row) t)
(format t "~d ~a~%" (1+ (max-mismatch (SPLIT-SEQUENCE:split-sequence #\Space row))) row) ))
</syntaxhighlight>
</lang>
 
{{out}}
Line 2,147 ⟶ 2,743:
=={{header|D}}==
{{trans|Kotlin}}
<langsyntaxhighlight Dlang="d">import std.conv;
import std.exception;
import std.range;
Line 2,182 ⟶ 2,778:
}
}
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,290 ⟶ 2,886:
{{libheader| System.IOUtils}}
{{Trans|Kotlin}}
<syntaxhighlight lang="delphi">
<lang Delphi>
program Abbreviations_Automatic;
 
Line 2,378 ⟶ 2,974:
end;
Readln;
end.</langsyntaxhighlight>
 
=={{header|Emacs Lisp}}==
<syntaxhighlight lang="lisp">
(defun days-of-week ()
"Find minimum abbreviation length of days of week."
(let ((current-line-list))
(find-file "Days_of_week.txt") ; open file or switch to buffer
(beginning-of-buffer) ; go to the top of the buffer
(dolist (current-line (split-string (buffer-string) "\n")) ; go line by line through buffer
(setq current-line-list (split-string current-line " ")) ; change each line into list of days of week
(cycle-days current-line-list))))
 
(defun cycle-days (list-of-days)
"Find shortest unique abbreviation in LIST-OF-DAYS list."
(let ((abbrev-list)
(abbrev-length 1)
(current-abbrev)
(looking-for-shortest-list "yes"))
(if (= (length list-of-days) 0) ; if list is empty (i.e., blank line)
(setq looking-for-shortest-list nil)) ; then don't look for the shortest unique abbreviations
(while looking-for-shortest-list ; as long as we are looking for the shortest unique abbreviations
(setq abbrev-list (abbreviate-list list-of-days abbrev-length)) ; get a list of abbreviated day names
(if (= (length list-of-days) (length (seq-uniq abbrev-list))) ; if abbreviated list has no duplicates
(progn
(message (format "%d %s" abbrev-length list-of-days)) ; then in echo buffer show length and days
(setq looking-for-shortest-list nil)) ; also, then don't look for the shortest unique abbreviations
(setq abbrev-length (+ abbrev-length 1)))))) ; else increase the length of the abbreviation; loop to while
 
(defun abbreviate-list (list abbreviation-length)
"Take each element of LIST and abbreviate to ABBREVIATION-LENGTH variable."
(let ((abbrev-list)
(abbrev-element))
(dolist (one-element list) ; loop through each day of week
(if (>= (length one-element) abbreviation-length) ; if the day of week is at least as long as the abbreviation
(setq abbrev-element (substring one-element 0 abbreviation-length)) ; abbreviate the day of the week
(setq abbrev-element one-element)) ; otherwise don't abbreviate
(push abbrev-element abbrev-list)) ; put the abbreviated/non-abbreviated day on our list
abbrev-list)) ; return the list of abbreviated days
</syntaxhighlight>
{{out}}
(days-of-week)
<pre style="height:45ex">2 (Sunday Monday Tuesday Wednesday Thursday Friday Saturday)
2 (Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag)
4 (E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë)
2 (Ehud Segno Maksegno Erob Hamus Arbe Kedame)
5 (Al_Ahad Al_Ithinin Al_Tholatha’a Al_Arbia’a Al_Kamis Al_Gomia’a Al_Sabit)
4 (Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat)
2 (domingu llunes martes miércoles xueves vienres sábadu)
2 (Bazar_gÜnÜ Birinci_gÜn Çkinci_gÜn ÜçÜncÜ_gÜn DÖrdÜncÜ_gÜn Bes,inci_gÜn Altòncò_gÜn)
6 (Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat)
4 (Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar)
2 (Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota)
5 (Disul Dilun Dimeurzh Dimerc’her Diriaou Digwener Disadorn)
2 (nedelia ponedelnik vtornik sriada chetvartak petak sabota)
12 (sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk)
4 (Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte)
16 (Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_nah_kay_dzeeneh Tah_neesee_dzeehn_neh Deehn_ghee_dzee-neh Tl-oowey_tts-el_dehlee Dzeentt-ahzee)
6 (dy_Sul dy_Lun dy_Meurth dy_Mergher dy_You dy_Gwener dy_Sadorn)
2 (Dimanch Lendi Madi Mèkredi Jedi Vandredi Samdi)
2 (nedjelja ponedjeljak utorak srijeda cxetvrtak petak subota)
2 (nede^le ponde^lí úterÿ str^eda c^tvrtek pátek sobota)
2 (Sondee Mondee Tiisiday Walansedee TOOsedee Feraadee Satadee)
2 (s0ndag mandag tirsdag onsdag torsdag fredag l0rdag)
2 (zondag maandag dinsdag woensdag donderdag vrijdag zaterdag)
2 (Diman^co Lundo Mardo Merkredo ^Jaùdo Vendredo Sabato)
1 (pÜhapäev esmaspäev teisipäev kolmapäev neljapäev reede laupäev)
1 ()
7 (Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata)
2 (sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur)
2 (Yek_Sham’beh Do_Sham’beh Seh_Sham’beh Cha’har_Sham’beh Panj_Sham’beh Jom’eh Sham’beh)
2 (sunnuntai maanantai tiistai keskiviiko torsktai perjantai lauantai)
2 (dimanche lundi mardi mercredi jeudi vendredi samedi)
4 (Snein Moandei Tiisdei Woansdei Tonersdei Freed Sneon)
2 (Domingo Segunda_feira Martes Mércores Joves Venres Sábado)
2 (k’vira orshabati samshabati otkhshabati khutshabati p’arask’evi shabati)
2 (Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag)
2 (Kiriaki’ Defte’ra Tri’ti Teta’rti Pe’mpti Paraskebi’ Sa’bato)
3 (ravivaar somvaar mangalvaar budhvaar guruvaar shukravaar shanivaar)
6 (pópule pó‘akahi pó‘alua pó‘akolu pó‘ahá pó‘alima pó‘aono)
7 (Yom_rishon Yom_sheni Yom_shlishi Yom_revi’i Yom_chamishi Yom_shishi Shabat)
3 (ravivara somavar mangalavar budhavara brahaspativar shukravara shanivar)
3 (vasárnap hétfö kedd szerda csütörtök péntek szombat)
2 (Sunnudagur Mánudagur ╞riδjudagur Miδvikudagar Fimmtudagur FÖstudagur Laugardagur)
2 (sundio lundio mardio merkurdio jovdio venerdio saturdio)
3 (Minggu Senin Selasa Rabu Kamis Jumat Sabtu)
2 (Dominica Lunedi Martedi Mercuridi Jovedi Venerdi Sabbato)
4 (Dé_Domhnaigh Dé_Luain Dé_Máirt Dé_Ceadaoin Dé_ardaoin Dé_hAoine Dé_Sathairn)
2 (domenica lunedí martedí mercoledí giovedí venerdí sabato)
2 (Nichiyou_bi Getzuyou_bi Kayou_bi Suiyou_bi Mokuyou_bi Kin’you_bi Doyou_bi)
1 (Il-yo-il Wol-yo-il Hwa-yo-il Su-yo-il Mok-yo-il Kum-yo-il To-yo-il)
7 (Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni)
3 (sve-tdien pirmdien otrdien tresvdien ceturtdien piektdien sestdien)
2 (Sekmadienis Pirmadienis Antradienis Trec^iadienis Ketvirtadienis Penktadienis S^es^tadienis)
3 (Wangu Kazooba Walumbe Mukasa Kiwanuka Nnagawonye Wamunyi)
12 (xing-_qi-_rì xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù)
3 (Jedoonee Jelune Jemayrt Jecrean Jardaim Jeheiney Jesam)
3 (Jabot Manre Juje Wonje Taije Balaire Jarere)
5 (geminrongo minòmishi mártes mièrkoles misheushi bèrnashi mishábaro)
2 (Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu)
2 (sφndag mandag tirsdag onsdag torsdag fredag lφrdag)
7 (lo_dimenge lo_diluns lo_dimarç lo_dimèrcres lo_dijòus lo_divendres lo_dissabte)
4 (djadomingo djaluna djamars djarason djaweps djabièrna djasabra)
2 (Niedziela Poniedzial/ek Wtorek S,roda Czwartek Pia,tek Sobota)
3 (Domingo segunda-feire terça-feire quarta-feire quinta-feire sexta-feira såbado)
1 (Domingo Lunes martes Miercoles Jueves Viernes Sabado)
2 (Duminicª Luni Mart’i Miercuri Joi Vineri Sâmbªtª)
2 (voskresenie ponedelnik vtornik sreda chetverg pyatnitsa subbota)
4 (Sunday Di-luain Di-màirt Di-ciadain Di-ardaoin Di-haoine Di-sathurne)
2 (nedjelja ponedjeljak utorak sreda cxetvrtak petak subota)
5 (Sontaha Mmantaha Labobedi Laboraro Labone Labohlano Moqebelo)
2 (Iridha- Sandhudha- Anga.haruwa-dha- Badha-dha- Brahaspa.thindha- Sikura-dha- Sena.sura-dha-)
2 (nedel^a pondelok utorok streda s^tvrtok piatok sobota)
2 (Nedelja Ponedeljek Torek Sreda Cxetrtek Petek Sobota)
2 (domingo lunes martes miércoles jueves viernes sábado)
2 (sonde mundey tude-wroko dride-wroko fode-wroko freyda Saturday)
7 (Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi)
2 (söndag måndag tisdag onsdag torsdag fredag lordag)
2 (Linggo Lunes Martes Miyerkoles Huwebes Biyernes Sabado)
6 (Lé-pài-jít Pài-it Pài-jï Pài-sañ Pài-sì Pài-gÖ. Pài-lák)
7 (wan-ar-tit wan-tjan wan-ang-kaan wan-phoet wan-pha-ru-hat-sa-boh-die wan-sook wan-sao)
5 (Tshipi Mosupologo Labobedi Laboraro Labone Labotlhano Matlhatso)
6 (Pazar Pazartesi Sali Çar,samba Per,sembe Cuma Cumartesi)
2 (nedilya ponedilok vivtorok sereda chetver pyatnytsya subota)
8 (Chu?_Nhâ.t Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na’m Thú*_Sáu Thú*_Ba?y)
6 (dydd_Sul dyds_Llun dydd_Mawrth dyds_Mercher dydd_Iau dydd_Gwener dyds_Sadwrn)
3 (Dibeer Altine Talaata Allarba Al_xebes Aljuma Gaaw)
7 (iCawa uMvulo uLwesibini uLwesithathu uLuwesine uLwesihlanu uMgqibelo)
2 (zuntik montik dinstik mitvokh donershtik fraytik shabes)
7 (iSonto uMsombuluko uLwesibili uLwesithathu uLwesine uLwesihlanu uMgqibelo)
7 (Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni)
11 (Bazar_gÜnÜ Bazar_ærtæsi Çærs,ænbæ_axs,amò Çærs,ænbæ_gÜnÜ CÜmæ_axs,amò CÜmæ_gÜnÜ CÜmæ_Senbæ)
2 (Sun Moon Mars Mercury Jove Venus Saturn)
2 (zondag maandag dinsdag woensdag donderdag vrijdag zaterdag)
2 (KoseEraa GyoOraa BenEraa Kuoraa YOwaaraa FeEraa Memenaa)
5 (Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Sonnabend)
1 (Domingo Luns Terza_feira Corta_feira Xoves Venres Sábado)
7 (Dies_Solis Dies_Lunae Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Sabbatum)
12 (xing-_qi-_tiàn xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù)
4 (djadomingu djaluna djamars djarason djaweps djabièrnè djasabra)
2 (Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau)
1 ()
nil
</pre>
 
 
=={{header|Erlang}}==
Line 2,385 ⟶ 3,125:
The output is of the set of abbreviations. These are not sorted correctly and some encoding errors remain.
 
<langsyntaxhighlight lang="erlang">
-module(abbreviateweekdays).
-export([ main/0 ]).
Line 2,422 ⟶ 3,162:
{ok, Device} = (file:open("weekdays.txt", read)),
read_lines(Device, 1).
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 2,455 ⟶ 3,195:
=={{header|F_Sharp|F#}}==
===The function===
<langsyntaxhighlight lang="fsharp">
let fN g=let rec fN n=if g|>List.map(fun(g:string)->g.[0..n])|>Set.ofList|>Set.count=(List.length g) then (n+1) else fN(n+1)
fN 0
</syntaxhighlight>
</lang>
===The Task - Demonstrate the function===
<langsyntaxhighlight lang="fsharp">
fN ["Sunday"; "Monday"; "Tuesday"; "Wednesday"; "Thursday"; "Friday"; "Saturday"] // -> 2
fN ["Sondag"; "Maandag"; "Dinsdag"; "Woensdag"; "Donderdag"; "Vrydag"; "Saterdag"] // -> 2
Line 2,466 ⟶ 3,206:
fN ["Ehud"; "Segno"; "Maksegno"; "Erob"; "Hamus"; "Arbe"; "Kedame"] // -> 2
fN ["Al_Ahad"; "Al_Ithinin"; "Al_Tholatha'a"; "Al_Arbia'a"; "Al_Kamis"; "Al_Gomia'a"; "Al_Sabit";] // -> 5
</syntaxhighlight>
</lang>
 
=={{header|Factor}}==
Line 2,473 ⟶ 3,213:
As a concatenative language, Factor is uniquely suited for factoring words into smaller words. Assuming lexical/dynamic variables are not used, factoring is a cut-and-paste job that can be performed almost anywhere there is whitespace.
 
<langsyntaxhighlight lang="factor">USING: formatting io io.encodings.utf8 io.files kernel math
sequences sets splitting ;
IN: rosetta-code.abbreviations-automatic
Line 2,501 ⟶ 3,241:
header "day-names.txt" utf8 [ body ] with-file-reader ;
 
MAIN: abbreviations</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 2,606 ⟶ 3,346:
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|FreeBASIC}}==
{{trans|Yabasic}}
<syntaxhighlight lang="vbnet">Function Tokenize(text As String, tokens() As String) As Integer
Dim As Integer count = 0, posic = 1, start
While posic <= Len(text)
If Mid(text, posic, 1) <> " " Then
start = posic
While posic <= Len(text) Andalso Mid(text, posic, 1) <> " "
posic += 1
Wend
count += 1
tokens(count) = Mid(text, start, posic - start)
End If
posic += 1
Wend
Return count
End Function
 
Function Buscar(s As String) As Integer
Dim As Integer n, d, i, j
Dim As Boolean s_flag
Dim As String a, b
Dim As String r(1 To 100) ' Assuming a maximum of 100 tokens
n = Tokenize(s, r())
d = 1
Do
s_flag = True
For i = 1 To n
For j = i + 1 To n
a = Left(r(i), d)
b = Left(r(j), d)
If a = "" Or b = "" Then
s_flag = True
Exit For
Elseif a = b Then
s_flag = False
d += 1
Exit For
End If
Next j
If Not s_flag Then Exit For
Next i
Loop Until s_flag
Return d
End Function
 
Dim As Integer fileNum = Freefile()
If Open("days_of_week.txt" For Input As #fileNum) = 0 Then
Dim As String s
While Not Eof(fileNum)
Line Input #fileNum, s
Print Buscar(s); " "; s
Wend
Close #fileNum
Else
Print "Error opening file."
End If
 
Sleep</syntaxhighlight>
 
=={{header|FutureBasic}}==
This assumes a text file named "DaysOfWeek.txt" is in the same folder as the code file.
 
<syntaxhighlight lang="futurebasic">include "NSLog.incl"
include resources "DaysOfWeek.txt"
 
local fn DaysOfWeek as CFArrayRef
CFURLRef url
CFStringRef string
CFArrayRef weeks = NULL
url = fn BundleURLForResource( fn BundleMain, @"DaysOfWeek", @"txt", NULL )
string = fn StringWithContentsOfURL( url, NSUTF8StringEncoding, NULL )
if ( string )
weeks = fn StringComponentsSeparatedByCharactersInSet( string, fn CharacterSetNewlineSet )
end if
end fn = weeks
 
local fn MinAbbreviationLength( week as CFStringRef ) as long
CFArrayRef days
CFStringRef day1, day2, abbr
long count, length, minLen, index1, index2
minLen = 1
days = fn StringComponentsSeparatedByString( week, @" " )
if ( len( days ) == 7 )
count = len( days )
for index1 = 0 to count - 1
day1 = days[index1]
length = len( day1 )
abbr = left( day1, minLen )
for index2 = 0 to count - 1
if ( index2 == index1 ) then continue
day2 = days[index2]
while ( fn StringHasPrefix( day2, abbr ) )
minLen++
if ( minLen > length ) then break
abbr = left( day1, minLen )
wend
next
next
end if
end fn = minLen
 
void local fn Abbreviations
CFArrayRef weeks
CFStringRef week
weeks = fn DaysOfWeek
if ( weeks )
for week in weeks
if ( len(week) )
NSLog(@"%ld\t%@",fn MinAbbreviationLength( week ),week)
else
NSLog(@"NULL")
end if
next
end if
end fn
 
fn Abbreviations
 
HandleEvents</syntaxhighlight>
 
{{out}}
<pre style="height:15ex;">
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
2 Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
4 E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
2 Ehud Segno Maksegno Erob Hamus Arbe Kedame
5 Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
4 Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat
2 domingu llunes martes miércoles xueves vienres sábadu
2 Bazar_gÜnÜ Birinci_gÜn Çkinci_gÜn ÜçÜncÜ_gÜn DÖrdÜncÜ_gÜn Bes,inci_gÜn Altòncò_gÜn
6 Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat
4 Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar
2 Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota
5 Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn
2 nedelia ponedelnik vtornik sriada chetvartak petak sabota
12 sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk
4 Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte
16 Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_nah_kay_dzeeneh Tah_neesee_dzeehn_neh Deehn_ghee_dzee-neh Tl-oowey_tts-el_dehlee Dzeentt-ahzee
6 dy_Sul dy_Lun dy_Meurth dy_Mergher dy_You dy_Gwener dy_Sadorn
2 Dimanch Lendi Madi Mèkredi Jedi Vandredi Samdi
2 nedjelja ponedjeljak utorak srijeda cxetvrtak petak subota
2 nede^le ponde^lí úterÿ str^eda c^tvrtek pátek sobota
2 Sondee Mondee Tiisiday Walansedee TOOsedee Feraadee Satadee
2 s0ndag mandag tirsdag onsdag torsdag fredag l0rdag
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 Diman^co Lundo Mardo Merkredo ^Jaùdo Vendredo Sabato
1 pÜhapäev esmaspäev teisipäev kolmapäev neljapäev reede laupäev
NULL
7 Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata
2 sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur
2 Yek_Sham'beh Do_Sham'beh Seh_Sham'beh Cha'har_Sham'beh Panj_Sham'beh Jom'eh Sham'beh
2 sunnuntai maanantai tiistai keskiviiko torsktai perjantai lauantai
2 dimanche lundi mardi mercredi jeudi vendredi samedi
4 Snein Moandei Tiisdei Woansdei Tonersdei Freed Sneon
2 Domingo Segunda_feira Martes Mércores Joves Venres Sábado
2 k'vira orshabati samshabati otkhshabati khutshabati p'arask'evi shabati
2 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
2 Kiriaki' Defte'ra Tri'ti Teta'rti Pe'mpti Paraskebi' Sa'bato
3 ravivaar somvaar mangalvaar budhvaar guruvaar shukravaar shanivaar
6 pópule pó`akahi pó`alua pó`akolu pó`ahá pó`alima pó`aono
7 Yom_rishon Yom_sheni Yom_shlishi Yom_revi'i Yom_chamishi Yom_shishi Shabat
3 ravivara somavar mangalavar budhavara brahaspativar shukravara shanivar
3 vasárnap hétfö kedd szerda csütörtök péntek szombat
2 Sunnudagur Mánudagur ╞riδjudagur Miδvikudagar Fimmtudagur FÖstudagur Laugardagur
2 sundio lundio mardio merkurdio jovdio venerdio saturdio
3 Minggu Senin Selasa Rabu Kamis Jumat Sabtu
2 Dominica Lunedi Martedi Mercuridi Jovedi Venerdi Sabbato
4 Dé_Domhnaigh Dé_Luain Dé_Máirt Dé_Ceadaoin Dé_ardaoin Dé_hAoine Dé_Sathairn
2 domenica lunedí martedí mercoledí giovedí venerdí sabato
2 Nichiyou_bi Getzuyou_bi Kayou_bi Suiyou_bi Mokuyou_bi Kin'you_bi Doyou_bi
1 Il-yo-il Wol-yo-il Hwa-yo-il Su-yo-il Mok-yo-il Kum-yo-il To-yo-il
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
3 sve-tdien pirmdien otrdien tresvdien ceturtdien piektdien sestdien
2 Sekmadienis Pirmadienis Antradienis Trec^iadienis Ketvirtadienis Penktadienis S^es^tadienis
3 Wangu Kazooba Walumbe Mukasa Kiwanuka Nnagawonye Wamunyi
12 xing-_qi-_rì xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
3 Jedoonee Jelune Jemayrt Jecrean Jardaim Jeheiney Jesam
3 Jabot Manre Juje Wonje Taije Balaire Jarere
5 geminrongo minòmishi mártes mièrkoles misheushi bèrnashi mishábaro
2 Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu
2 sφndag mandag tirsdag onsdag torsdag fredag lφrdag
7 lo_dimenge lo_diluns lo_dimarç lo_dimèrcres lo_dijòus lo_divendres lo_dissabte
4 djadomingo djaluna djamars djarason djaweps djabièrna djasabra
2 Niedziela Poniedzial/ek Wtorek S,roda Czwartek Pia,tek Sobota
3 Domingo segunda-feire terça-feire quarta-feire quinta-feire sexta-feira såbado
1 Domingo Lunes martes Miercoles Jueves Viernes Sabado
2 Duminicª Luni Mart'i Miercuri Joi Vineri Sâmbªtª
2 voskresenie ponedelnik vtornik sreda chetverg pyatnitsa subbota
4 Sunday Di-luain Di-màirt Di-ciadain Di-ardaoin Di-haoine Di-sathurne
2 nedjelja ponedjeljak utorak sreda cxetvrtak petak subota
5 Sontaha Mmantaha Labobedi Laboraro Labone Labohlano Moqebelo
2 Iridha- Sandhudha- Anga.haruwa-dha- Badha-dha- Brahaspa.thindha- Sikura-dha- Sena.sura-dha-
2 nedel^a pondelok utorok streda s^tvrtok piatok sobota
2 Nedelja Ponedeljek Torek Sreda Cxetrtek Petek Sobota
2 domingo lunes martes miércoles jueves viernes sábado
2 sonde mundey tude-wroko dride-wroko fode-wroko freyda Saturday
7 Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi
2 söndag måndag tisdag onsdag torsdag fredag lordag
2 Linggo Lunes Martes Miyerkoles Huwebes Biyernes Sabado
6 Lé-pài-jít Pài-it Pài-jï Pài-sañ Pài-sì Pài-gÖ. Pài-lák
7 wan-ar-tit wan-tjan wan-ang-kaan wan-phoet wan-pha-ru-hat-sa-boh-die wan-sook wan-sao
5 Tshipi Mosupologo Labobedi Laboraro Labone Labotlhano Matlhatso
7 Pazar Pazartesi Sali Çar,samba Per,sembe Cuma Cumartesi
2 nedilya ponedilok vivtorok sereda chetver pyatnytsya subota
8 Chu?_Nhâ.t Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na'm Thú*_Sáu Thú*_Ba?y
6 dydd_Sul dyds_Llun dydd_Mawrth dyds_Mercher dydd_Iau dydd_Gwener dyds_Sadwrn
3 Dibeer Altine Talaata Allarba Al_xebes Aljuma Gaaw
7 iCawa uMvulo uLwesibini uLwesithathu uLuwesine uLwesihlanu uMgqibelo
2 zuntik montik dinstik mitvokh donershtik fraytik shabes
7 iSonto uMsombuluko uLwesibili uLwesithathu uLwesine uLwesihlanu uMgqibelo
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
11 Bazar_gÜnÜ Bazar_ærtæsi Çærs,ænbæ_axs,amò Çærs,ænbæ_gÜnÜ CÜmæ_axs,amò CÜmæ_gÜnÜ CÜmæ_Senbæ
2 Sun Moon Mars Mercury Jove Venus Saturn
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 KoseEraa GyoOraa BenEraa Kuoraa YOwaaraa FeEraa Memenaa
5 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Sonnabend
1 Domingo Luns Terza_feira Corta_feira Xoves Venres Sábado
7 Dies_Solis Dies_Lunae Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Sabbatum
12 xing-_qi-_tiàn xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|Go}}==
{{trans|Kotlin}}
<langsyntaxhighlight lang="go">package main
 
import(
Line 2,684 ⟶ 3,654:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 2,693 ⟶ 3,663:
=={{header|Groovy}}==
{{trans|Java}}
<langsyntaxhighlight lang="groovy">class Abbreviations {
static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("days_of_week.txt"), "utf-8"))
Line 2,737 ⟶ 3,707:
}
}
}</langsyntaxhighlight>
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,839 ⟶ 3,809:
 
=={{header|Haskell}}==
<langsyntaxhighlight lang="haskell">import Data.List (inits, intercalate, transpose)
import qualified Data.Set as S
 
Line 2,866 ⟶ 3,836:
]
. return
<$> lines s</langsyntaxhighlight>
{{Out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,880 ⟶ 3,850:
 
=={{header|J}}==
<syntaxhighlight lang="j">NB. y is words in boxes
<lang>
NB. y is words in boxes
abbreviation_length =: monad define
N =. # y
Line 2,899 ⟶ 3,868:
L =. abbreviation_length&> a
((' ',~":)&> L) ,"1 lines
)</syntaxhighlight>
)
</lang>
 
<pre>
 
DAY_NAMES =: noun define
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,924 ⟶ 3,891:
=={{header|Java}}==
{{trans|D}}
<langsyntaxhighlight Javalang="java">import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
Line 2,975 ⟶ 3,942:
}
}
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,077 ⟶ 4,044:
 
=={{header|JavaScript}}==
===Procedural===
The list of the names was edited and embedded in the HTML-Document with a <script>-tag, where it is accessible as an array called $list.
<langsyntaxhighlight lang="javascript">
Array.prototype.hasDoubles = function() {
let arr = this.slice();
Line 3,096 ⟶ 4,064:
for (i = 0; i < arr.length; i++)
testArr[i] = arr[i].substr(0, len);
} while (testArr.hasDoubles());
return len;
}
Line 3,108 ⟶ 4,076:
document.write(`<p>(${l}): ${days.join('. ')}.</p>`);
}
</syntaxhighlight>
</lang>
 
{{out}}
<pre>
(2): Su. Mo. Tu. We. Th. Fr. Sa.
 
(2): So. Ma. Di. Wo. Do. Vr. Sa.
 
(4): E_dj. E_hë. E_ma. E_më. E_en. E_pr. E_sh.
 
(2): Eh. Se. Ma. Er. Ha. Ar. Ke.
 
(5): Al_Ah. Al_It. Al_Th. Al_Ar. Al_Ka. Al_Go. Al_Sa.
 
(4): Guir. Yerg. Yere. Tcho. Hink. Ourp. Shap.
 
(2): do. ll. ma. mi. xu. vi. sá.
 
(2): Ba. Bi. Çk. Üç. DÖ. Be. Al.
 
(6): Igande. Astele. Astear. Asteaz. Ostegu. Ostira. Larunb.
 
(4): Robi. Shom. Mong. Budh. BRih. Shuk. Shon.
 
(2): Ne. Po. Ut. Sr. Cx. Pe. Su.
 
(5): Disul. Dilun. Dimeu. Dimer. Diria. Digwe. Disad.
 
(2): ne. po. vt. sr. ch. pe. sa.
 
(12): sing_kei_yah. sing_kei_yat. sing_kei_yee. sing_kei_saa. sing_kei_sie. sing_kei_ng. sing_kei_luk.
 
(4): Dium. Dill. Dima. Dime. Dijo. Dive. Diss.
 
(16): Dzeenkk-eh. Dzeehn_kk-ehreh. Dzeehn_kk-ehreh_. Tah_neesee_dzeeh. Deehn_ghee_dzee-. Tl-oowey_tts-el_. Dzeentt-ahzee.
 
(6): dy_Sul. dy_Lun. dy_Meu. dy_Mer. dy_You. dy_Gwe. dy_Sad.
(2): Di. Le. Ma. Mè. Je. Va. Sa.
Line 3,228 ⟶ 4,180:
(2): Ki. At. Qu. Il. Ch. Ku. In.
</pre>
 
===Functional===
JavaScript, as a language for embedded interpreter environments, defines no intrinsic IO libraries.
 
Where the procedural example above assumes an interpreter embedded in a browser, with access to a DOM model, this example assumes, for contrast, an interpreter embedded in the form of a macOS '''JSContext''', with no DOM model present, but with access to the 'JS for Automation' library.
It reads a text file in from the local file-system:
 
{{Works with|MacOS JXA}}
<syntaxhighlight lang="javascript">(() => {
"use strict";
 
// ----- MINIMUM LENGTH OF UNIQUE ABBREVIATIONS ------
 
// minAbbrevnLength :: [String] -> Int
const minAbbrevnLength = xs => {
const n = xs.length;
 
return 0 < n ? (() => {
const
abbrs = dropWhile(ks => n > ks.length)(
transpose(xs.map(inits))
.map(prefixes => Array.from(
new Set(
prefixes.map(ws => ws.join(""))
)
))
);
 
return (abbrs.length && abbrs[0][0].length) || (
maximum(xs.map(x => x.length))
);
})() : 0;
};
 
// ---------------------- TEST -----------------------
// main :: IO ()
const main = () =>
readFile(
"~/Desktop/weekDayNames.txt"
)
.split("\n")
// Display of just the first few lines.
.slice(0, 10)
.map(s => {
const
ws = words(s),
n = minAbbrevnLength(ws);
 
return `${n}: ${ws.map(w => w.slice(0, n))}`;
})
.join("\n");
 
 
// ----------- MACOS JS FOR AUTOMATION IO ------------
 
// readFile :: FilePath -> IO String
const readFile = fp => {
// The contents of a text file at the
// filepath fp.
const
e = $(),
ns = $.NSString
.stringWithContentsOfFileEncodingError(
$(fp).stringByStandardizingPath,
$.NSUTF8StringEncoding,
e
);
 
return ObjC.unwrap(
ns.isNil() ? (
e.localizedDescription
) : ns
);
};
 
// --------------------- GENERIC ---------------------
 
// dropWhile :: (a -> Bool) -> [a] -> [a]
// dropWhile :: (Char -> Bool) -> String -> String
const dropWhile = p =>
// The suffix remainining after takeWhile p xs.
xs => {
const n = xs.length;
 
return xs.slice(
0 < n ? until(
i => n === i || !p(xs[i])
)(i => 1 + i)(0) : 0
);
};
 
 
// inits :: [a] -> [[a]]
// inits :: String -> [String]
const inits = xs =>
// All prefixes of the argument,
// shortest first.
[...xs].map(
(_, i, ys) => ys.slice(0, 1 + i)
);
 
 
// maximum :: Ord a => [a] -> a
const maximum = xs => (
// The largest value in a non-empty list.
ys => 0 < ys.length ? (
ys.slice(1).reduce(
(a, y) => y > a ? (
y
) : a, ys[0]
)
) : undefined
)(xs);
 
 
// transpose :: [[a]] -> [[a]]
const transpose = rows => {
// If any rows are shorter than those that follow,
// their elements are skipped:
// > transpose [[10,11],[20],[],[30,31,32]]
// == [[10,20,30],[11,31],[32]]
const go = xss =>
0 < xss.length ? (() => {
const
h = xss[0],
t = xss.slice(1);
 
return 0 < h.length ? [
[h[0]].concat(t.reduce(
(a, xs) => a.concat(
0 < xs.length ? (
[xs[0]]
) : []
),
[]
))
].concat(go([h.slice(1)].concat(
t.map(xs => xs.slice(1))
))) : go(t);
})() : [];
 
return go(rows);
};
 
 
// until :: (a -> Bool) -> (a -> a) -> a -> a
const until = p =>
// The value resulting from repeated applications
// of f to the seed value x, terminating when
// that result returns true for the predicate p.
f => x => {
let v = x;
 
while (!p(v)) {
v = f(v);
}
 
return v;
};
 
 
// words :: String -> [String]
const words = s =>
// List of space-delimited sub-strings.
s.split(/\s+/u);
 
// MAIN ---
return main();
})();</syntaxhighlight>
{{Out}}
<pre>2: Su,Mo,Tu,We,Th,Fr,Sa
2: So,Ma,Di,Wo,Do,Vr,Sa
4: E_dj,E_hë,E_ma,E_më,E_en,E_pr,E_sh
2: Eh,Se,Ma,Er,Ha,Ar,Ke
5: Al_Ah,Al_It,Al_Th,Al_Ar,Al_Ka,Al_Go,Al_Sa
4: Guir,Yerg,Yere,Tcho,Hink,Ourp,Shap
2: do,ll,ma,mi,xu,vi,sá
2: Ba,Bi,Çk,Üç,DÖ,Be,Al
6: Igande,Astele,Astear,Asteaz,Ostegu,Ostira,Larunb
4: Robi,Shom,Mong,Budh,BRih,Shuk,Shon</pre>
 
=={{header|jq}}==
{{works with|jq}}
'''Also works with gojq, the Go implementation of jq, and with fq.'''
 
'''Adapted from [[#Wren|Wren]]'''
<syntaxhighlight lang=jq>
def trim: sub("^ *";"") | sub(" $";"");
 
# Each item in the stream should be a string with $n names
def minimum_abbreviation_lengths(stream; $n):
foreach (stream|trim) as $line ({i: 0};
.i+=1
| if $line == "" then .emit = ""
else [$line|splits(" *")] as $days
| if ($days|length != $n) then .emit = "WARNING: line \(.i) does not have \($n) tokens"
elif ($days|unique|length < $n) # some days have the same name
then .emit = "∞: \($line)"
else .len = 1
| .emit = false
| until(.emit;
.len as $len
| if ($days|map(.[:$len])|unique|length == $n)
then .emit = "\($len): \($line)"
else .len += 1
end)
end
end;
.emit) ;
 
minimum_abbreviation_lengths(inputs; 7)
</syntaxhighlight>
''Invocation:'' jq -nrR -f abbreviations-automatic.jq
days_of_week.txt
{{output}}
Semantically identical to that at [[#Wren|Wren]].
 
=={{header|Julia}}==
<langsyntaxhighlight lang="julia">const text = """
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
Line 3,356 ⟶ 4,524:
 
processweek(text)
</langsyntaxhighlight> {{output}}<pre>
(Showing first 10 lines.)
Sunday Monday Tuesday Wednesday Thursday Friday Saturday => ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], which are length 2
Line 3,374 ⟶ 4,542:
===Original O(''n<sup>2</sup>'') solution===
where ''n'' is the number of strings in each line.
<langsyntaxhighlight lang="scala">// version 1.1.4-3
 
import java.io.File
Line 3,402 ⟶ 4,570:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 3,508 ⟶ 4,676:
 
===Alternative O(''n log n'') solution based on sorting===
<langsyntaxhighlight lang="scala">import java.io.File
import kotlin.math.max
 
Line 3,541 ⟶ 4,709:
.forEach(::println)
}
}</langsyntaxhighlight>
 
{{out}}
Line 3,643 ⟶ 4,811:
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|Ksh}}==
<syntaxhighlight lang="ksh">
#!/bin/ksh
 
# Abbreviations, automatic
 
# # Variables:
#
dow_file='../dow'
 
typeset -T Dow_T=(
typeset -a -h "Week day name array" dow
typeset -si -h "minimum length abbreviation" minabv
 
function init_dow {
_.minabv=$1
_.dow=( $2 )
}
 
function print_wk {
typeset i ; typeset -si i
 
printf "(%d) " ${_.minabv}
for((i=0; i<${#_.dow[*]}; i++)); do
printf "%${_.minabv}s " ${_.dow[i]:0:${_.minabv}}
done
printf "\n"
}
)
 
# # Functions:
#
# # Function _file2arr(fn, arr) - read file fn into arr
#
function _file2arr {
typeset _fn ; _fn="$1"
typeset _arr ; nameref _arr="$2"
typeset _i ; typeset -si _i=0
 
while read; do
_arr[_i++]="$REPLY"
done < ${_fn}
 
}
 
# # Function _minabbr(buff) - return the min length abbr for items in buff
#
function _minabbr {
typeset _buf ; _buf="$1"
typeset _i _flg ; typeset -si _i=0 _cnt
typeset _item _list _abr
 
until (( _cnt == 7 )); do
unset _list
_cnt=0
(( _i++ ))
for _item in ${_buf}; do
_abr=${_item:0:${_i}}
[[ ${_abr} == @(${_list}) ]] && break
_list+="${_abr}|"
(( _cnt++ ))
done
done
 
echo ${_i}
}
 
######
# main #
######
 
typeset -a dow langs
_file2arr "${dow_file}" dow
 
for ((i=0; i<${#dow[*]}; i++)); do
(( ! ${#dow[i]} )) && { print "Blank Input, line $((i+1))" ; continue ;}
alen=$(_minabbr "${dow[i]}")
Dow_T langs[i]
langs[i].init_dow ${alen} "${dow[i]}"
(( $((RANDOM%100+1))<=5 )) && { printf "%d. " $((i+1)) ; langs[i].print_wk ;}
done</syntaxhighlight>
{{out}}<pre>
15. (4) Dium Dill Dima Dime Dijo Dive Diss
Blank Input, line 26
46. (4) Dé_D Dé_L Dé_M Dé_C Dé_a Dé_h Dé_S
73. (2) do lu ma mi ju vi sá
83. (8) Chu?_Nhâ Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na' Thú*_Sáu Thú*_Ba?
Blank Input, line 100
</pre>
 
=={{header|Lua}}==
<langsyntaxhighlight lang="lua">function split(line)
local wa = {}
for i in string.gmatch(line, "%S+") do
Line 3,696 ⟶ 4,955:
end
end
end</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,798 ⟶ 5,057:
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<syntaxhighlight lang="mathematica">
<lang Mathematica>
(*This function gives all 'heads' of str of length 1 to maxLength. Since the input data was formatted to use underscores in place of spaces, there is an edge case where distinct abbreviations derived from the input data would actually not be distinct in the 'real' abbreviations. See further comments below regarding the difference between my output and the output of other solutions.*)
Abbreviations[maxLength_Integer][str_String]:=Array[StringTake[StringPadRight[str,maxLength,"_"],#]&,maxLength];
Line 3,812 ⟶ 5,071:
RequiredAbbreviationLength[""]="";
RequiredAbbreviationLength[input_String]:=Max[StringLength/@ShortestUniqueAbbreviations[StringSplit[input]]];
</syntaxhighlight>
</lang>
 
{{out}}
Line 3,933 ⟶ 5,192:
We provide two solutions, one consisting to build the abbreviations for each language and stopping when all of them are different, the second sorting the list of day names for each language and adjusting the abbreviation length to make sure that two consecutive day names are different. The second method should be more efficient, but it doesn’t really matters here.
===Using a set===
<syntaxhighlight lang="nim">
<lang Nim>
import sets
import unicode
Line 3,965 ⟶ 5,224:
else:
echo line
</syntaxhighlight>
</lang>
===Using a sorted list===
<syntaxhighlight lang="nim">
<lang Nim>
import algorithm
import unicode
Line 3,999 ⟶ 5,258:
else:
echo line
</syntaxhighlight>
</lang>
{{out}}
<pre style="height:45ex">
Line 4,105 ⟶ 5,364:
=={{header|Objeck}}==
{{trans|Java}}
<langsyntaxhighlight lang="objeck">use System.IO.File;
use Collection;
 
Line 4,170 ⟶ 5,429:
};
}
}</langsyntaxhighlight>
 
{{out}}
Line 4,277 ⟶ 5,536:
Output is the same as for Raku.
{{trans|Raku}}
<langsyntaxhighlight lang="perl">use strict;
use utf8;
binmode STDOUT, ":utf8";
Line 4,297 ⟶ 5,556:
while ($_ = <$fh>) {
print "$.) " . auto_abbreviate($_) . ' ' . $_;
}</langsyntaxhighlight>
 
=={{header|Phix}}==
The file abbrev_auto.txt was manually created from the task description. The following code
assumes a more recent version of get_text() that strips any leading utf8 bom by default (0.8.0+).
<!--<langsyntaxhighlight Phixlang="phix">-->
<span style="color: #008080;">constant</span> <span style="color: #000000;">lines</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">get_text</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"abbrev_auto.txt"</span><span style="color: #0000FF;">,</span><span style="color: #004600;">GT_LF_STRIPPED</span><span style="color: #0000FF;">)</span>
Line 4,322 ⟶ 5,581:
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</langsyntaxhighlight>-->
{{out}}
<pre>
Line 4,331 ⟶ 5,590:
5: Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
...
</pre>
 
=={{header|Picat}}==
{{works with|Picat}}
<syntaxhighlight lang="picat">
import util.
 
max_length(Words) = Max =>
Lengths = [len(W): W in Words],
Max = max(Lengths).
 
min_abbr([]) = 0.
 
min_abbr(Line) = Min =>
Words = split(Line),
Max = max_length(Words),
I = 0,
Abbrevs = [],
Uniqs = [],
do
I := I + 1,
Abbrevs := [slice(W, 1, I): W in Words],
Uniqs := sort_remove_dups(Abbrevs)
while (I < Max, len(Abbrevs) > len(Uniqs)),
Min = I.
 
main(Args) =>
File = Args[1],
Reader = open(File),
while (not at_end_of_stream(Reader))
Line := read_line(Reader),
Min := min_abbr(Line),
if (Min > 0) then
printf("%d %s\n", Min, Line)
else
nl
end
end.
</syntaxhighlight>
{{out}}
<pre style="height:45ex">
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
2 Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
4 E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
2 Ehud Segno Maksegno Erob Hamus Arbe Kedame
5 Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
4 Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat
2 domingu llunes martes miércoles xueves vienres sábadu
2 Bazar_gÜnÜ Birinci_gÜn Çkinci_gÜn ÜçÜncÜ_gÜn DÖrdÜncÜ_gÜn Bes,inci_gÜn Altòncò_gÜn
6 Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat
4 Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar
2 Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota
5 Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn
2 nedelia ponedelnik vtornik sriada chetvartak petak sabota
12 sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk
4 Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte
16 Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_nah_kay_dzeeneh Tah_neesee_dzeehn_neh Deehn_ghee_dzee-neh Tl-oowey_tts-el_dehlee Dzeentt-ahzee
6 dy_Sul dy_Lun dy_Meurth dy_Mergher dy_You dy_Gwener dy_Sadorn
2 Dimanch Lendi Madi Mèkredi Jedi Vandredi Samdi
2 nedjelja ponedjeljak utorak srijeda cxetvrtak petak subota
2 nede^le ponde^lí úterÿ str^eda c^tvrtek pátek sobota
2 Sondee Mondee Tiisiday Walansedee TOOsedee Feraadee Satadee
2 s0ndag mandag tirsdag onsdag torsdag fredag l0rdag
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 Diman^co Lundo Mardo Merkredo ^Jaùdo Vendredo Sabato
1 pÜhapäev esmaspäev teisipäev kolmapäev neljapäev reede laupäev
 
7 Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata
2 sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur
2 Yek_Sham'beh Do_Sham'beh Seh_Sham'beh Cha'har_Sham'beh Panj_Sham'beh Jom'eh Sham'beh
2 sunnuntai maanantai tiistai keskiviiko torsktai perjantai lauantai
2 dimanche lundi mardi mercredi jeudi vendredi samedi
4 Snein Moandei Tiisdei Woansdei Tonersdei Freed Sneon
2 Domingo Segunda_feira Martes Mércores Joves Venres Sábado
2 k'vira orshabati samshabati otkhshabati khutshabati p'arask'evi shabati
2 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
2 Kiriaki' Defte'ra Tri'ti Teta'rti Pe'mpti Paraskebi' Sa'bato
3 ravivaar somvaar mangalvaar budhvaar guruvaar shukravaar shanivaar
6 pópule pó`akahi pó`alua pó`akolu pó`ahá pó`alima pó`aono
7 Yom_rishon Yom_sheni Yom_shlishi Yom_revi'i Yom_chamishi Yom_shishi Shabat
3 ravivara somavar mangalavar budhavara brahaspativar shukravara shanivar
3 vasárnap hétfö kedd szerda csütörtök péntek szombat
2 Sunnudagur Mánudagur ╞riδjudagur Miδvikudagar Fimmtudagur FÖstudagur Laugardagur
2 sundio lundio mardio merkurdio jovdio venerdio saturdio
3 Minggu Senin Selasa Rabu Kamis Jumat Sabtu
2 Dominica Lunedi Martedi Mercuridi Jovedi Venerdi Sabbato
4 Dé_Domhnaigh Dé_Luain Dé_Máirt Dé_Ceadaoin Dé_ardaoin Dé_hAoine Dé_Sathairn
2 domenica lunedí martedí mercoledí giovedí venerdí sabato
2 Nichiyou_bi Getzuyou_bi Kayou_bi Suiyou_bi Mokuyou_bi Kin'you_bi Doyou_bi
1 Il-yo-il Wol-yo-il Hwa-yo-il Su-yo-il Mok-yo-il Kum-yo-il To-yo-il
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
3 sve-tdien pirmdien otrdien tresvdien ceturtdien piektdien sestdien
2 Sekmadienis Pirmadienis Antradienis Trec^iadienis Ketvirtadienis Penktadienis S^es^tadienis
3 Wangu Kazooba Walumbe Mukasa Kiwanuka Nnagawonye Wamunyi
12 xing-_qi-_rì xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
3 Jedoonee Jelune Jemayrt Jecrean Jardaim Jeheiney Jesam
3 Jabot Manre Juje Wonje Taije Balaire Jarere
5 geminrongo minòmishi mártes mièrkoles misheushi bèrnashi mishábaro
2 Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu
2 sφndag mandag tirsdag onsdag torsdag fredag lφrdag
7 lo_dimenge lo_diluns lo_dimarç lo_dimèrcres lo_dijòus lo_divendres lo_dissabte
4 djadomingo djaluna djamars djarason djaweps djabièrna djasabra
2 Niedziela Poniedzial/ek Wtorek S,roda Czwartek Pia,tek Sobota
3 Domingo segunda-feire terça-feire quarta-feire quinta-feire sexta-feira såbado
1 Domingo Lunes martes Miercoles Jueves Viernes Sabado
2 Duminicª Luni Mart'i Miercuri Joi Vineri Sâmbªtª
2 voskresenie ponedelnik vtornik sreda chetverg pyatnitsa subbota
4 Sunday Di-luain Di-màirt Di-ciadain Di-ardaoin Di-haoine Di-sathurne
2 nedjelja ponedjeljak utorak sreda cxetvrtak petak subota
5 Sontaha Mmantaha Labobedi Laboraro Labone Labohlano Moqebelo
2 Iridha- Sandhudha- Anga.haruwa-dha- Badha-dha- Brahaspa.thindha- Sikura-dha- Sena.sura-dha-
2 nedel^a pondelok utorok streda s^tvrtok piatok sobota
2 Nedelja Ponedeljek Torek Sreda Cxetrtek Petek Sobota
2 domingo lunes martes miércoles jueves viernes sábado
2 sonde mundey tude-wroko dride-wroko fode-wroko freyda Saturday
7 Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi
2 söndag måndag tisdag onsdag torsdag fredag lordag
2 Linggo Lunes Martes Miyerkoles Huwebes Biyernes Sabado
6 Lé-pài-jít Pài-it Pài-jï Pài-sañ Pài-sì Pài-gÖ. Pài-lák
7 wan-ar-tit wan-tjan wan-ang-kaan wan-phoet wan-pha-ru-hat-sa-boh-die wan-sook wan-sao
5 Tshipi Mosupologo Labobedi Laboraro Labone Labotlhano Matlhatso
6 Pazar Pazartesi Sali Çar,samba Per,sembe Cuma Cumartesi
2 nedilya ponedilok vivtorok sereda chetver pyatnytsya subota
8 Chu?_Nhâ.t Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na'm Thú*_Sáu Thú*_Ba?y
6 dydd_Sul dyds_Llun dydd_Mawrth dyds_Mercher dydd_Iau dydd_Gwener dyds_Sadwrn
3 Dibeer Altine Talaata Allarba Al_xebes Aljuma Gaaw
7 iCawa uMvulo uLwesibini uLwesithathu uLuwesine uLwesihlanu uMgqibelo
2 zuntik montik dinstik mitvokh donershtik fraytik shabes
7 iSonto uMsombuluko uLwesibili uLwesithathu uLwesine uLwesihlanu uMgqibelo
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
11 Bazar_gÜnÜ Bazar_ærtæsi Çærs,ænbæ_axs,amò Çærs,ænbæ_gÜnÜ CÜmæ_axs,amò CÜmæ_gÜnÜ CÜmæ_Senbæ
2 Sun Moon Mars Mercury Jove Venus Saturn
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 KoseEraa GyoOraa BenEraa Kuoraa YOwaaraa FeEraa Memenaa
5 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Sonnabend
1 Domingo Luns Terza_feira Corta_feira Xoves Venres Sábado
7 Dies_Solis Dies_Lunae Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Sabbatum
12 xing-_qi-_tiàn xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|Prolog}}==
{{works with|SWI Prolog}}
<langsyntaxhighlight lang="prolog">minimum_abbreviation_length(Day_names, Min_length):-
sort(Day_names, Sorted_names),
minimum_abbreviation_length(Sorted_names, Min_length, 1).
Line 4,387 ⟶ 5,786:
 
main:-
process_file("days_of_week.txt").</langsyntaxhighlight>
 
{{out}}
Line 4,491 ⟶ 5,890:
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|PureBasic}}==
<syntaxhighlight lang="purebasic">EnableExplicit
#TZ="|"
#FZ="@"
#WORD_SEPARATOR=Chr(32)
Declare.i abbreviations(txt.s)
Define dataset.s, line_number.i, line_cache.s, result.i, word_index.i, word.s
 
If OpenConsole("abbreviations-automatic") And ReadFile(0,"./Data/days_of_the_week.txt")
dataset=ReadString(0,#PB_UTF8|#PB_File_IgnoreEOL) : CloseFile(0)
line_number=1
Repeat
line_cache=StringField(dataset,line_number,#LF$)
If Len(line_cache)=0
PrintN("")
Else
result=abbreviations(line_cache) : PrintN(RSet(Str(result),3)+": "+line_cache)
word_index=1
word=StringField(line_cache,word_index,#WORD_SEPARATOR)
If word : Print(Space(5)) : EndIf
While word
Print(LSet(Left(word,result),Len(word)+1))
word_index+1 : word=StringField(line_cache,word_index,#WORD_SEPARATOR)
Wend
PrintN("")
EndIf
line_number+1
Until line_number>CountString(dataset,#LF$)
Input()
EndIf
 
Procedure.b CompareLetters(sfield.s,letters.i,separator.s=#WORD_SEPARATOR)
Define word_index.i, buf.s
For word_index=1 To CountString(sfield,separator)+1
buf+LSet(Left(StringField(sfield,word_index,separator),letters),letters,#FZ)+#TZ
Next
For word_index=1 To CountString(buf,#TZ)
If CountString(buf,StringField(buf,word_index,#TZ))>1 : ProcedureReturn #True : EndIf
Next
ProcedureReturn #False
EndProcedure
 
Procedure.i abbreviations(txt.s)
Define letters.i=1
While CompareLetters(txt,letters) : letters+1 : Wend
ProcedureReturn letters
EndProcedure</syntaxhighlight>
{{out}}
<pre style="height:45ex"> 2: Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Su Mo Tu We Th Fr Sa
2: Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
So Ma Di Wo Do Vr Sa
4: E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
E_dj E_hë E_ma E_më E_en E_pr E_sh
2: Ehud Segno Maksegno Erob Hamus Arbe Kedame
Eh Se Ma Er Ha Ar Ke
5: Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
Al_Ah Al_It Al_Th Al_Ar Al_Ka Al_Go Al_Sa
4: Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat
Guir Yerg Yere Tcho Hink Ourp Shap
2: domingu llunes martes miércoles xueves vienres sábadu
do ll ma mi xu vi sá
2: Bazar_gÜnÜ Birinci_gÜn Çkinci_gÜn ÜçÜncÜ_gÜn DÖrdÜncÜ_gÜn Bes,inci_gÜn Altòncò_gÜn
Ba Bi Çk Üç DÖ Be Al
6: Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat
Igande Astele Astear Asteaz Ostegu Ostira Larunb
4: Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar
Robi Shom Mong Budh BRih Shuk Shon
2: Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota
Ne Po Ut Sr Cx Pe Su
5: Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn
Disul Dilun Dimeu Dimer Diria Digwe Disad
2: nedelia ponedelnik vtornik sriada chetvartak petak sabota
ne po vt sr ch pe sa
12: sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk
sing_kei_yah sing_kei_yat sing_kei_yee sing_kei_saa sing_kei_sie sing_kei_ng sing_kei_luk
4: Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte
Dium Dill Dima Dime Dijo Dive Diss
16: Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_nah_kay_dzeeneh Tah_neesee_dzeehn_neh Deehn_ghee_dzee-neh Tl-oowey_tts el_dehlee Dzeentt-ahzee
Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_ Tah_neesee_dzeeh Deehn_ghee_dzee- Tl-oowey_tts-el_ Dzeentt-ahzee
6: dy_Sul dy_Lun dy_Meurth dy_Mergher dy_You dy_Gwener dy_Sadorn
dy_Sul dy_Lun dy_Meu dy_Mer dy_You dy_Gwe dy_Sad
2: Dimanch Lendi Madi Mèkredi Jedi Vandredi Samdi
Di Le Ma Mè Je Va Sa
2: nedjelja ponedjeljak utorak srijeda cxetvrtak petak subota
ne po ut sr cx pe su
2: nede^le ponde^lí úterÿ str^eda c^tvrtek pátek sobota
ne po út st c^ pá so
2: Sondee Mondee Tiisiday Walansedee TOOsedee Feraadee Satadee
So Mo Ti Wa TO Fe Sa
2: s0ndag mandag tirsdag onsdag torsdag fredag l0rdag
s0 ma ti on to fr l0
2: zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
zo ma di wo do vr za
2: Diman^co Lundo Mardo Merkredo ^Jaùdo Vendredo Sabato
Di Lu Ma Me ^J Ve Sa
1: pÜhapäev esmaspäev teisipäev kolmapäev neljapäev reede laupäev
p e t k n r l
 
7: Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata
Diu_pri Diu_seq Diu_tri Diu_qua Diu_qui Diu_sex Diu_sab
2: sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur
su má tÿ mi hó fr le
2: Yek_Sham'beh Do_Sham'beh Seh_Sham'beh Cha'har_Sham'beh Panj_Sham'beh Jom'eh Sham'beh
Ye Do Se Ch Pa Jo Sh
2: sunnuntai maanantai tiistai keskiviiko torsktai perjantai lauantai
su ma ti ke to pe la
2: dimanche lundi mardi mercredi jeudi vendredi samedi
di lu ma me je ve sa
4: Snein Moandei Tiisdei Woansdei Tonersdei Freed Sneon
Snei Moan Tiis Woan Tone Free Sneo
2: Domingo Segunda_feira Martes Mércores Joves Venres Sábado
Do Se Ma Mé Jo Ve Sá
2: k'vira orshabati samshabati otkhshabati khutshabati p'arask'evi shabati
k' or sa ot kh p' sh
2: Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
So Mo Di Mi Do Fr Sa
2: Kiriaki' Defte'ra Tri'ti Teta'rti Pe'mpti Paraskebi' Sa'bato
Ki De Tr Te Pe Pa Sa
3: ravivaar somvaar mangalvaar budhvaar guruvaar shukravaar shanivaar
rav som man bud gur shu sha
6: pópule pó`akahi pó`alua pó`akolu pó`ahá pó`alima pó`aono
pópule pó`aka pó`alu pó`ako pó`ahá pó`ali pó`aon
7: Yom_rishon Yom_sheni Yom_shlishi Yom_revi'i Yom_chamishi Yom_shishi Shabat
Yom_ris Yom_she Yom_shl Yom_rev Yom_cha Yom_shi Shabat
3: ravivara somavar mangalavar budhavara brahaspativar shukravara shanivar
rav som man bud bra shu sha
3: vasárnap hétfö kedd szerda csütörtök péntek szombat
vas hét ked sze csü pén szo
2: Sunnudagur Mánudagur ╞riδjudagur Miδvikudagar Fimmtudagur FÖstudagur Laugardagur
Su Má ╞r Mi Fi FÖ La
2: sundio lundio mardio merkurdio jovdio venerdio saturdio
su lu ma me jo ve sa
3: Minggu Senin Selasa Rabu Kamis Jumat Sabtu
Min Sen Sel Rab Kam Jum Sab
2: Dominica Lunedi Martedi Mercuridi Jovedi Venerdi Sabbato
Do Lu Ma Me Jo Ve Sa
4: Dé_Domhnaigh Dé_Luain Dé_Máirt Dé_Ceadaoin Dé_ardaoin Dé_hAoine Dé_Sathairn
Dé_D Dé_L Dé_M Dé_C Dé_a Dé_h Dé_S
2: domenica lunedí martedí mercoledí giovedí venerdí sabato
do lu ma me gi ve sa
2: Nichiyou_bi Getzuyou_bi Kayou_bi Suiyou_bi Mokuyou_bi Kin'you_bi Doyou_bi
Ni Ge Ka Su Mo Ki Do
1: Il-yo-il Wol-yo-il Hwa-yo-il Su-yo-il Mok-yo-il Kum-yo-il To-yo-il
I W H S M K T
7: Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
Dies_Do Dies_Lu Dies_Ma Dies_Me Dies_Io Dies_Ve Dies_Sa
3: sve-tdien pirmdien otrdien tresvdien ceturtdien piektdien sestdien
sve pir otr tre cet pie ses
2: Sekmadienis Pirmadienis Antradienis Trec^iadienis Ketvirtadienis Penktadienis S^es^tadienis
Se Pi An Tr Ke Pe S^
3: Wangu Kazooba Walumbe Mukasa Kiwanuka Nnagawonye Wamunyi
Wan Kaz Wal Muk Kiw Nna Wam
12: xing-_qi-_rì xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
xing-_qi-_rì xing-_qi-_yi xing-_qi-_èr xing-_qi-_sa xing-_qi-_sì xing-_qi-_wu xing-_qi-_li
3: Jedoonee Jelune Jemayrt Jecrean Jardaim Jeheiney Jesam
Jed Jel Jem Jec Jar Jeh Jes
3: Jabot Manre Juje Wonje Taije Balaire Jarere
Jab Man Juj Won Tai Bal Jar
5: geminrongo minòmishi mártes mièrkoles misheushi bèrnashi mishábaro
gemin minòm márte mièrk mishe bèrna mishá
2: Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu
Ah Is Se Ra Kh Ju Sa
2: sφndag mandag tirsdag onsdag torsdag fredag lφrdag
sφ ma ti on to fr lφ
7: lo_dimenge lo_diluns lo_dimarç lo_dimèrcres lo_dijòus lo_divendres lo_dissabte
lo_dime lo_dilu lo_dima lo_dimè lo_dijò lo_dive lo_diss
4: djadomingo djaluna djamars djarason djaweps djabièrna djasabra
djad djal djam djar djaw djab djas
2: Niedziela Poniedzial/ek Wtorek S,roda Czwartek Pia,tek Sobota
Ni Po Wt S, Cz Pi So
3: Domingo segunda-feire terça-feire quarta-feire quinta-feire sexta-feira såbado
Dom seg ter qua qui sex såb
1: Domingo Lunes martes Miercoles Jueves Viernes Sabado
D L m M J V S
2: Duminicª Luni Mart'i Miercuri Joi Vineri Sâmbªtª
Du Lu Ma Mi Jo Vi Sâ
2: voskresenie ponedelnik vtornik sreda chetverg pyatnitsa subbota
vo po vt sr ch py su
4: Sunday Di-luain Di-màirt Di-ciadain Di-ardaoin Di-haoine Di-sathurne
Sund Di-l Di-m Di-c Di-a Di-h Di-s
2: nedjelja ponedjeljak utorak sreda cxetvrtak petak subota
ne po ut sr cx pe su
5: Sontaha Mmantaha Labobedi Laboraro Labone Labohlano Moqebelo
Sonta Mmant Labob Labor Labon Laboh Moqeb
2: Iridha- Sandhudha- Anga.haruwa-dha- Badha-dha- Brahaspa.thindha- Sikura-dha- Sena.sura-dha-
Ir Sa An Ba Br Si Se
2: nedel^a pondelok utorok streda s^tvrtok piatok sobota
ne po ut st s^ pi so
2: Nedelja Ponedeljek Torek Sreda Cxetrtek Petek Sobota
Ne Po To Sr Cx Pe So
2: domingo lunes martes miércoles jueves viernes sábado
do lu ma mi ju vi sá
2: sonde mundey tude-wroko dride-wroko fode-wroko freyda Saturday
so mu tu dr fo fr Sa
7: Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi
Jumapil Jumatat Jumanne Jumatan Alhamis Ijumaa Jumamos
2: söndag måndag tisdag onsdag torsdag fredag lordag
sö må ti on to fr lo
2: Linggo Lunes Martes Miyerkoles Huwebes Biyernes Sabado
Li Lu Ma Mi Hu Bi Sa
6: Lé-pài-jít Pài-it Pài-jï Pài-sañ Pài-sì Pài-gÖ. Pài-lák
Lé-pài Pài-it Pài-jï Pài-sa Pài-sì Pài-gÖ Pài-lá
7: wan-ar-tit wan-tjan wan-ang-kaan wan-phoet wan-pha-ru-hat-sa-boh-die wan-sook wan-sao
wan-ar- wan-tja wan-ang wan-pho wan-pha wan-soo wan-sao
5: Tshipi Mosupologo Labobedi Laboraro Labone Labotlhano Matlhatso
Tship Mosup Labob Labor Labon Labot Matlh
6: Pazar Pazartesi Sali Çar,samba Per,sembe Cuma Cumartesi
Pazar Pazart Sali Çar,sa Per,se Cuma Cumart
2: nedilya ponedilok vivtorok sereda chetver pyatnytsya subota
ne po vi se ch py su
8: Chu?_Nhâ.t Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na'm Thú*_Sáu Thú*_Ba?y
Chu?_Nhâ Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na' Thú*_Sáu Thú*_Ba?
6: dydd_Sul dyds_Llun dydd_Mawrth dyds_Mercher dydd_Iau dydd_Gwener dyds_Sadwrn
dydd_S dyds_L dydd_M dyds_M dydd_I dydd_G dyds_S
3: Dibeer Altine Talaata Allarba Al_xebes Aljuma Gaaw
Dib Alt Tal All Al_ Alj Gaa
7: iCawa uMvulo uLwesibini uLwesithathu uLuwesine uLwesihlanu uMgqibelo
iCawa uMvulo uLwesib uLwesit uLuwesi uLwesih uMgqibe
2: zuntik montik dinstik mitvokh donershtik fraytik shabes
zu mo di mi do fr sh
7: iSonto uMsombuluko uLwesibili uLwesithathu uLwesine uLwesihlanu uMgqibelo
iSonto uMsombu uLwesib uLwesit uLwesin uLwesih uMgqibe
7: Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
Dies_Do Dies_Lu Dies_Ma Dies_Me Dies_Io Dies_Ve Dies_Sa
11: Bazar_gÜnÜ Bazar_ærtæsi Çærs,ænbæ_axs,amò Çærs,ænbæ_gÜnÜ CÜmæ_axs,amò CÜmæ_gÜnÜ CÜmæ_Senbæ
Bazar_gÜnÜ Bazar_ærtæs Çærs,ænbæ_a Çærs,ænbæ_g CÜmæ_axs,am CÜmæ_gÜnÜ CÜmæ_Senbæ
2: Sun Moon Mars Mercury Jove Venus Saturn
Su Mo Ma Me Jo Ve Sa
2: zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
zo ma di wo do vr za
2: KoseEraa GyoOraa BenEraa Kuoraa YOwaaraa FeEraa Memenaa
Ko Gy Be Ku YO Fe Me
5: Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Sonnabend
Sonnt Monta Diens Mittw Donne Freit Sonna
1: Domingo Luns Terza_feira Corta_feira Xoves Venres Sábado
D L T C X V S
7: Dies_Solis Dies_Lunae Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Sabbatum
Dies_So Dies_Lu Dies_Ma Dies_Me Dies_Io Dies_Ve Dies_Sa
12: xing-_qi-_tiàn xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
xing-_qi-_ti xing-_qi-_yi xing-_qi-_èr xing-_qi-_sa xing-_qi-_sì xing-_qi-_wu xing-_qi-_li
4: djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
djad djal djam djar djaw djab djas
2: Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
Ki At Qu Il Ch Ku In </pre>
 
=={{header|Python}}==
Line 4,496 ⟶ 6,141:
{{works with|Python|3.6}}
{{trans|Kotlin}}
<langsyntaxhighlight lang="python">def shortest_abbreviation_length(line, list_size):
words = line.split()
word_count = len(words)
Line 4,523 ⟶ 6,168:
print()
 
automatic_abbreviations('daysOfWeek.txt', 7)</langsyntaxhighlight>
 
{{out}}
Line 4,630 ⟶ 6,275:
===Functional===
In terms of generators:
<langsyntaxhighlight lang="python">import operator
from itertools import (accumulate,
repeat)
Line 4,683 ⟶ 6,328:
 
if __name__ == '__main__':
main()</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 4,793 ⟶ 6,438:
The generic primitives are curried, allowing for more flexible composition:
{{Works with|Python|3}}
<langsyntaxhighlight lang="python">'''Automatic abbreviations'''
 
from itertools import (accumulate, chain)
Line 4,916 ⟶ 6,561:
# MAIN ---
if __name__ == '__main__':
main()</langsyntaxhighlight>
{{Out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 4,931 ⟶ 6,576:
5 Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn
2 nedelia ponedelnik vtornik sriada chetvartak petak sabota</pre>
 
=={{header|R}}==
<syntaxhighlight lang="R">
library(stringi)
 
abbrev <- function(w) {
w1 <- stri_split_fixed(w," ") %>% unlist()
if (length(w1) != 7) stop("Error: not enough days in the week.")
maxv <- max(sapply(w1,\(x) nchar(x)))
for (i in 1:maxv) {
tl <- stri_sub(w1,1,i) %>% unique() %>% length()
if (tl == 7) return(i)
}
}
 
# Main
lines <- readLines("daysOfWeek.txt")
for (l in lines) {
if (nchar(l) == 0) {
cat("\n")
} else {
cat(paste(abbrev(l),l),"\n")
}
}
 
</syntaxhighlight>
{{Out}}
<pre>
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
2 Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
4 E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
2 Ehud Segno Maksegno Erob Hamus Arbe Kedame
5 Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
4 Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat
2 domingu llunes martes miércoles xueves vienres sábadu
2 Bazar_gÜnÜ Birinci_gÜn Çkinci_gÜn ÜçÜncÜ_gÜn DÖrdÜncÜ_gÜn Bes,inci_gÜn Altòncò_gÜn
6 Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat
4 Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar
2 Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota
5 Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn
2 nedelia ponedelnik vtornik sriada chetvartak petak sabota
12 sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk
4 Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte
16 Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_nah_kay_dzeeneh Tah_neesee_dzeehn_neh Deehn_ghee_dzee-neh Tl-oowey_tts-el_dehlee Dzeentt-ahzee
6 dy_Sul dy_Lun dy_Meurth dy_Mergher dy_You dy_Gwener dy_Sadorn
2 Dimanch Lendi Madi Mèkredi Jedi Vandredi Samdi
2 nedjelja ponedjeljak utorak srijeda cxetvrtak petak subota
2 nede^le ponde^lí úterÿ str^eda c^tvrtek pátek sobota
2 Sondee Mondee Tiisiday Walansedee TOOsedee Feraadee Satadee
2 s0ndag mandag tirsdag onsdag torsdag fredag l0rdag
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 Diman^co Lundo Mardo Merkredo ^Jaùdo Vendredo Sabato
1 pÜhapäev esmaspäev teisipäev kolmapäev neljapäev reede laupäev
 
7 Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata
2 sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur
2 Yek_Sham'beh Do_Sham'beh Seh_Sham'beh Cha'har_Sham'beh Panj_Sham'beh Jom'eh Sham'beh
2 sunnuntai maanantai tiistai keskiviiko torsktai perjantai lauantai
2 dimanche lundi mardi mercredi jeudi vendredi samedi
4 Snein Moandei Tiisdei Woansdei Tonersdei Freed Sneon
2 Domingo Segunda_feira Martes Mércores Joves Venres Sábado
2 k'vira orshabati samshabati otkhshabati khutshabati p'arask'evi shabati
2 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
2 Kiriaki' Defte'ra Tri'ti Teta'rti Pe'mpti Paraskebi' Sa'bato
3 ravivaar somvaar mangalvaar budhvaar guruvaar shukravaar shanivaar
6 pópule pó`akahi pó`alua pó`akolu pó`ahá pó`alima pó`aono
7 Yom_rishon Yom_sheni Yom_shlishi Yom_revi'i Yom_chamishi Yom_shishi Shabat
3 ravivara somavar mangalavar budhavara brahaspativar shukravara shanivar
3 vasárnap hétfö kedd szerda csütörtök péntek szombat
2 Sunnudagur Mánudagur ╞riδjudagur Miδvikudagar Fimmtudagur FÖstudagur Laugardagur
2 sundio lundio mardio merkurdio jovdio venerdio saturdio
3 Minggu Senin Selasa Rabu Kamis Jumat Sabtu
2 Dominica Lunedi Martedi Mercuridi Jovedi Venerdi Sabbato
4 Dé_Domhnaigh Dé_Luain Dé_Máirt Dé_Ceadaoin Dé_ardaoin Dé_hAoine Dé_Sathairn
2 domenica lunedí martedí mercoledí giovedí venerdí sabato
2 Nichiyou_bi Getzuyou_bi Kayou_bi Suiyou_bi Mokuyou_bi Kin'you_bi Doyou_bi
1 Il-yo-il Wol-yo-il Hwa-yo-il Su-yo-il Mok-yo-il Kum-yo-il To-yo-il
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
3 sve-tdien pirmdien otrdien tresvdien ceturtdien piektdien sestdien
2 Sekmadienis Pirmadienis Antradienis Trec^iadienis Ketvirtadienis Penktadienis S^es^tadienis
3 Wangu Kazooba Walumbe Mukasa Kiwanuka Nnagawonye Wamunyi
12 xing-_qi-_rì xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
3 Jedoonee Jelune Jemayrt Jecrean Jardaim Jeheiney Jesam
3 Jabot Manre Juje Wonje Taije Balaire Jarere
5 geminrongo minòmishi mártes mièrkoles misheushi bèrnashi mishábaro
2 Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu
2 sφndag mandag tirsdag onsdag torsdag fredag lφrdag
7 lo_dimenge lo_diluns lo_dimarç lo_dimèrcres lo_dijòus lo_divendres lo_dissabte
4 djadomingo djaluna djamars djarason djaweps djabièrna djasabra
2 Niedziela Poniedzial/ek Wtorek S,roda Czwartek Pia,tek Sobota
3 Domingo segunda-feire terça-feire quarta-feire quinta-feire sexta-feira såbado
1 Domingo Lunes martes Miercoles Jueves Viernes Sabado
2 Duminicª Luni Mart'i Miercuri Joi Vineri Sâmbªtª
2 voskresenie ponedelnik vtornik sreda chetverg pyatnitsa subbota
4 Sunday Di-luain Di-màirt Di-ciadain Di-ardaoin Di-haoine Di-sathurne
2 nedjelja ponedjeljak utorak sreda cxetvrtak petak subota
5 Sontaha Mmantaha Labobedi Laboraro Labone Labohlano Moqebelo
2 Iridha- Sandhudha- Anga.haruwa-dha- Badha-dha- Brahaspa.thindha- Sikura-dha- Sena.sura-dha-
2 nedel^a pondelok utorok streda s^tvrtok piatok sobota
2 Nedelja Ponedeljek Torek Sreda Cxetrtek Petek Sobota
2 domingo lunes martes miércoles jueves viernes sábado
2 sonde mundey tude-wroko dride-wroko fode-wroko freyda Saturday
7 Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi
2 söndag måndag tisdag onsdag torsdag fredag lordag
2 Linggo Lunes Martes Miyerkoles Huwebes Biyernes Sabado
6 Lé-pài-jít Pài-it Pài-jï Pài-sañ Pài-sì Pài-gÖ. Pài-lák
7 wan-ar-tit wan-tjan wan-ang-kaan wan-phoet wan-pha-ru-hat-sa-boh-die wan-sook wan-sao
5 Tshipi Mosupologo Labobedi Laboraro Labone Labotlhano Matlhatso
6 Pazar Pazartesi Sali Çar,samba Per,sembe Cuma Cumartesi
2 nedilya ponedilok vivtorok sereda chetver pyatnytsya subota
8 Chu?_Nhâ.t Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na'm Thú*_Sáu Thú*_Ba?y
6 dydd_Sul dyds_Llun dydd_Mawrth dyds_Mercher dydd_Iau dydd_Gwener dyds_Sadwrn
3 Dibeer Altine Talaata Allarba Al_xebes Aljuma Gaaw
7 iCawa uMvulo uLwesibini uLwesithathu uLuwesine uLwesihlanu uMgqibelo
2 zuntik montik dinstik mitvokh donershtik fraytik shabes
7 iSonto uMsombuluko uLwesibili uLwesithathu uLwesine uLwesihlanu uMgqibelo
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
11 Bazar_gÜnÜ Bazar_ærtæsi Çærs,ænbæ_axs,amò Çærs,ænbæ_gÜnÜ CÜmæ_axs,amò CÜmæ_gÜnÜ CÜmæ_Senbæ
2 Sun Moon Mars Mercury Jove Venus Saturn
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 KoseEraa GyoOraa BenEraa Kuoraa YOwaaraa FeEraa Memenaa
5 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Sonnabend
1 Domingo Luns Terza_feira Corta_feira Xoves Venres Sábado
7 Dies_Solis Dies_Lunae Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Sabbatum
12 xing-_qi-_tiàn xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|Racket}}==
 
<langsyntaxhighlight lang="racket">#lang racket
 
(require racket/set)
Line 4,951 ⟶ 6,725:
["" ""]
[(and s (app string-split ss)) (format "~a ~a" (abbr-length ss) s)]))
(for-each (compose displayln report-line) (take (file->lines "data.txt") 5)))</langsyntaxhighlight>
 
{{out}}
Line 4,967 ⟶ 6,741:
Note that this is using a previous version of the date file that has erroneous duplicate day names (see line 90). Since the effort was already expended to catch such problems, it may as well be demonstrated.
 
<syntaxhighlight lang="raku" perl6line>sub auto-abbreviate ( Str $string ) {
return Nil unless my @words = $string.words;
return $_ if @words».substr(0, $_).Set == @words for 1 .. @words».chars.max;
Line 4,974 ⟶ 6,748:
 
# Testing
say ++$, ') ', .&auto-abbreviate, ' ', $_ for './DoWAKA.txt'.IO.lines;</langsyntaxhighlight>
{{out}}
<pre style="height:40ex;overflow:scroll;">1) 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 5,078 ⟶ 6,852:
 
=={{header|Red}}==
<syntaxhighlight lang="red">
<lang Red>
Red []
;; read and convert data to a string - to char conversion is neccessary to avoid
Line 5,109 ⟶ 6,883:
print [min line] ;; print automatically reduces all words in block
]
</syntaxhighlight>
</lang>
{{Out}}
<pre>
Line 5,131 ⟶ 6,905:
 
=={{header|REXX}}==
<langsyntaxhighlight lang="rexx"> /*REXX program finds the minimum length abbreviation for a lists of words (from a file).*/
parseiFID= arg'ABBREV_A.TAB' uw /*name of the file that has the table. /*obtain optional arguments from the CL*/
iFID=Say 'ABBREV_A.TABminimum' /*name ofdisplay the filefirst thatpart hasof the tabletitle. */
saySay 'minimumabbrev' center('days of the week',80) /*display the firsttitle part offor the titleoutput. */
saySay 'abbrev------' center("days'',80,'-') of the week", 80) /*display the titleseparator for the output. title line. */
say '══════' center("", 80, '═') /*display separator forprocess the titlefile lineuntil done. */
Do While lines(iFID)\==0
/* [↓] process the file until done. */
do while lines(iFID)\==0; days=linein(iFID) /* read a line (should contain 7 words).*/
If minLendays='' abb(days)Then /*find thecheck minimumfor abbreviationa lengthblank line or null line. */
Say ''
say right(minLen, 4) ' ' days /*display a somewhat formatted output. */
Else Do
end /*j*/
exit minLen=abb(days) /*stick a fork in it,find the we'reminimum allabbreviation donelength. */
Say right(minLen,4) ' ' days /*display a somewhat formatted output. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
If minlen='????' Then
abb: procedure; parse arg x; #=words(x) /*obtain list of words; find how many.*/
if #==0Say then return '' >>> No unique abbreviation found /*check for a blank line or null line. */<<<'
End
@.= /*@. is a stemmed array of the words.*/
End
L=0 /*L is the max length of " " */
Exit do j=1 for #; @.j=word(x, j) /*assignstick toa fork in it,we're all done. array for faster processing*/
/*----------------------------------------------------------------------------------*/
L.j=length(@.j); L= max(L, L.j) /*find the maximum length of any item. */
abb: Procedure
end /*L*/
Parse Arg daylist /* obtain list of words /* [↓] determine minimum abbrev length*/
dayn=words(daylist) do m=1 for L; $= /* find how many. /*for all lengths, find a unique abbrev*/
day.='' do k=1 to #; a=left(@.k, m) /*getday. anis abbreviationa (withstemmed lengtharray of M)the words. */
L=0 if wordpos(a,$)\==0 then iterate M /*testL this abbreviation for uniqunessis the max length of the words. */
Do j=1 for dayn
$=$ a /*so far, it's unique; add to the list.*/
day.j=word(daylist,j) end /*kassign to array for faster processing */
L.j=length(day.j)
leave m /*a good abbreviation length was found.*/
L= max(L,L.j) end /*m find the maximum length of any item. */
End
return m</lang>
/* [?] determine minimum abbrev length */
Do m=1 To L
abblist='' /* for all lengths,find a unique abbrev */
Do k=1 to dayn
abbrev=strip(left(day.k,m)) /* get an abbreviation (with length M). */
If wordpos(abbrev,abblist)>0 Then /* not unique */
Iterate M /* try next length */
If length(abbrev)>=m Then
abblist=abblist abbrev /* so far,it's unique add to the list. */
End
leave /* a good abbreviation length was found. */
End
If m>L Then /* no unique abbreviation length found */
m='????'
Return m </syntaxhighlight>
{{out|output|text=&nbsp; when using the default input file containing the complete list of words:}}
<pre style="height:45ex">
Line 5,268 ⟶ 7,057:
=={{header|Ruby}}==
 
<langsyntaxhighlight lang="ruby">require "abbrev"
File.read("daynames.txt").each_line do |line|
Line 5,275 ⟶ 7,064:
puts "Minimum size: #{abbr.values.max_by(&:size).size}", abbr.inspect, "\n"
end
</syntaxhighlight>
</lang>
{{out}}
<pre>Minimum size: 2
Line 5,310 ⟶ 7,099:
 
=={{header|Rust}}==
<langsyntaxhighlight lang="c">/**
* Abbreviations from tintenalarm.de
*/
Line 5,362 ⟶ 7,151:
}
num
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 5,468 ⟶ 7,257:
===Functional programmed===
====build.sbt====
<langsyntaxhighlight Scalalang="scala">name := "Abbreviations-automatic"
scalaVersion := "2.13.0"
version := "0.1"
Line 5,474 ⟶ 7,263:
homepage := Some(url("http://rosettacode.org/wiki/Abbreviations,_automatic#Scala"))
 
libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.3.0"</langsyntaxhighlight>
====AbbreviationsAuto.scala====
<langsyntaxhighlight Scalalang="scala">object AbbreviationsAuto extends App {
private val wd = os.pwd
 
Line 5,498 ⟶ 7,287:
.foreach(line => println(processLine(line)))
 
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> ""
Line 5,599 ⟶ 7,388:
 
=={{header|SenseTalk}}==
<langsyntaxhighlight lang="sensetalk">function AbbreviationsAutomatic days
put 1 into abbreviationLength
put the number of items in days into len
Line 5,616 ⟶ 7,405:
add 1 to abbreviationLength
end repeat
end AbbreviationsAutomatic</langsyntaxhighlight>
<langsyntaxhighlight lang="sensetalk">put "Weekdays.txt" into myFile
 
put the defaultStringEncoding into savedEncoding
Line 5,638 ⟶ 7,427:
close file myFile
 
put savedEncoding into the defaultStringEncoding</langsyntaxhighlight>
{{out}}
<pre>
Line 5,656 ⟶ 7,445:
 
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl">
set f [open abbreviations_automatic_weekdays.txt]
set lines [split [read -nonewline $f] \n]
Line 5,674 ⟶ 7,463:
incr i
puts "$i $days"
}</langsyntaxhighlight>
{{out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 5,688 ⟶ 7,477:
2 Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota
5 Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn</pre>
 
 
=={{header|Transd}}==
<syntaxhighlight lang="scheme">#lang transd
 
MainModule : {
_start: (λ
(with fs FileStream() words String()
(open-r fs "D:\\Temp\\wordlist.txt")
(for line in (read-lines fs) do
(with days (split line " ") len 0
(for w in days do (for y in days do
(if (neq w y) (= len (max len (coincide w y))))))
(lout (+ len 1) " " days))
) ) )
}</syntaxhighlight>{{out}}
<pre style="height:45ex">
2 [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
2 [Sondag, Maandag, Dinsdag, Woensdag, Donderdag, Vrydag, Saterdag]
4 [E_djelë, E_hënë, E_martë, E_mërkurë, E_enjte, E_premte, E_shtunë]
2 [Ehud, Segno, Maksegno, Erob, Hamus, Arbe, Kedame]
5 [Al_Ahad, Al_Ithinin, Al_Tholatha'a, Al_Arbia'a, Al_Kamis, Al_Gomia'a, Al_Sabit]
4 [Guiragui, Yergou_shapti, Yerek_shapti, Tchorek_shapti, Hink_shapti, Ourpat, Shapat]
2 [domingu, llunes, martes, miércoles, xueves, vienres, sábadu]
2 [Bazar_gÜnÜ, Birinci_gÜn, Çkinci_gÜn, ÜçÜncÜ_gÜn, DÖrdÜncÜ_gÜn, Bes,inci_gÜn, Altòncò_gÜn]
6 [Igande, Astelehen, Astearte, Asteazken, Ostegun, Ostiral, Larunbat]
4 [Robi_bar, Shom_bar, Mongal_bar, Budhh_bar, BRihashpati_bar, Shukro_bar, Shoni_bar]
2 [Nedjelja, Ponedeljak, Utorak, Srijeda, Cxetvrtak, Petak, Subota]
5 [Disul, Dilun, Dimeurzh, Dimerc'her, Diriaou, Digwener, Disadorn]
2 [nedelia, ponedelnik, vtornik, sriada, chetvartak, petak, sabota]
12 [sing_kei_yaht, sing_kei_yat, sing_kei_yee, sing_kei_saam, sing_kei_sie, sing_kei_ng, sing_kei_luk]
4 [Diumenge, Dilluns, Dimarts, Dimecres, Dijous, Divendres, Dissabte]
16 [Dzeenkk-eh, Dzeehn_kk-ehreh, Dzeehn_kk-ehreh_nah_kay_dzeeneh, Tah_neesee_dzeehn_neh, Deehn_ghee_dzee-neh, Tl-oowey_tts-el_dehlee, Dzeentt-ahzee]
6 [dy_Sul, dy_Lun, dy_Meurth, dy_Mergher, dy_You, dy_Gwener, dy_Sadorn]
2 [Dimanch, Lendi, Madi, Mèkredi, Jedi, Vandredi, Samdi]
2 [nedjelja, ponedjeljak, utorak, srijeda, cxetvrtak, petak, subota]
2 [nede^le, ponde^lí, úterÿ, str^eda, c^tvrtek, pátek, sobota]
2 [Sondee, Mondee, Tiisiday, Walansedee, TOOsedee, Feraadee, Satadee]
2 [s0ndag, mandag, tirsdag, onsdag, torsdag, fredag, l0rdag]
2 [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag]
2 [Diman^co, Lundo, Mardo, Merkredo, ^Jaùdo, Vendredo, Sabato]
1 [pÜhapäev, esmaspäev, teisipäev, kolmapäev, neljapäev, reede, laupäev]
1 []
7 [Diu_prima, Diu_sequima, Diu_tritima, Diu_quartima, Diu_quintima, Diu_sextima, Diu_sabbata]
2 [sunnudagur, mánadagur, tÿsdaguy, mikudagur, hósdagur, friggjadagur, leygardagur]
2 [Yek_Sham'beh, Do_Sham'beh, Seh_Sham'beh, Cha'har_Sham'beh, Panj_Sham'beh, Jom'eh, Sham'beh]
2 [sunnuntai, maanantai, tiistai, keskiviiko, torsktai, perjantai, lauantai]
2 [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
4 [Snein, Moandei, Tiisdei, Woansdei, Tonersdei, Freed, Sneon]
2 [Domingo, Segunda_feira, Martes, Mércores, Joves, Venres, Sábado]
2 [k'vira, orshabati, samshabati, otkhshabati, khutshabati, p'arask'evi, shabati]
2 [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
2 [Kiriaki', Defte'ra, Tri'ti, Teta'rti, Pe'mpti, Paraskebi', Sa'bato]
3 [ravivaar, somvaar, mangalvaar, budhvaar, guruvaar, shukravaar, shanivaar]
6 [pópule, pó`akahi, pó`alua, pó`akolu, pó`ahá, pó`alima, pó`aono]
7 [Yom_rishon, Yom_sheni, Yom_shlishi, Yom_revi'i, Yom_chamishi, Yom_shishi, Shabat]
3 [ravivara, somavar, mangalavar, budhavara, brahaspativar, shukravara, shanivar]
3 [vasárnap, hétfö, kedd, szerda, csütörtök, péntek, szombat]
2 [Sunnudagur, Mánudagur, ╞riδjudagur, Miδvikudagar, Fimmtudagur, FÖstudagur, Laugardagur]
2 [sundio, lundio, mardio, merkurdio, jovdio, venerdio, saturdio]
3 [Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu]
2 [Dominica, Lunedi, Martedi, Mercuridi, Jovedi, Venerdi, Sabbato]
4 [Dé_Domhnaigh, Dé_Luain, Dé_Máirt, Dé_Ceadaoin, Dé_ardaoin, Dé_hAoine, Dé_Sathairn]
2 [domenica, lunedí, martedí, mercoledí, giovedí, venerdí, sabato]
2 [Nichiyou_bi, Getzuyou_bi, Kayou_bi, Suiyou_bi, Mokuyou_bi, Kin'you_bi, Doyou_bi]
1 [Il-yo-il, Wol-yo-il, Hwa-yo-il, Su-yo-il, Mok-yo-il, Kum-yo-il, To-yo-il]
7 [Dies_Dominica, Dies_Lunæ, Dies_Martis, Dies_Mercurii, Dies_Iovis, Dies_Veneris, Dies_Saturni]
3 [sve-tdien, pirmdien, otrdien, tresvdien, ceturtdien, piektdien, sestdien]
2 [Sekmadienis, Pirmadienis, Antradienis, Trec^iadienis, Ketvirtadienis, Penktadienis, S^es^tadienis]
3 [Wangu, Kazooba, Walumbe, Mukasa, Kiwanuka, Nnagawonye, Wamunyi]
12 [xing-_qi-_rì, xing-_qi-_yi-., xing-_qi-_èr, xing-_qi-_san-., xing-_qi-_sì, xing-_qi-_wuv., xing-_qi-_liù]
3 [Jedoonee, Jelune, Jemayrt, Jecrean, Jardaim, Jeheiney, Jesam]
3 [Jabot, Manre, Juje, Wonje, Taije, Balaire, Jarere]
5 [geminrongo, minòmishi, mártes, mièrkoles, misheushi, bèrnashi, mishábaro]
2 [Ahad, Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu]
2 [sφndag, mandag, tirsdag, onsdag, torsdag, fredag, lφrdag]
7 [lo_dimenge, lo_diluns, lo_dimarç, lo_dimèrcres, lo_dijòus, lo_divendres, lo_dissabte]
4 [djadomingo, djaluna, djamars, djarason, djaweps, djabièrna, djasabra]
2 [Niedziela, Poniedzial/ek, Wtorek, S,roda, Czwartek, Pia,tek, Sobota]
3 [Domingo, segunda-feire, terça-feire, quarta-feire, quinta-feire, sexta-feira, såbado]
1 [Domingo, Lunes, martes, Miercoles, Jueves, Viernes, Sabado]
2 [Duminicª, Luni, Mart'i, Miercuri, Joi, Vineri, Sâmbªtª]
2 [voskresenie, ponedelnik, vtornik, sreda, chetverg, pyatnitsa, subbota]
4 [Sunday, Di-luain, Di-màirt, Di-ciadain, Di-ardaoin, Di-haoine, Di-sathurne]
2 [nedjelja, ponedjeljak, utorak, sreda, cxetvrtak, petak, subota]
5 [Sontaha, Mmantaha, Labobedi, Laboraro, Labone, Labohlano, Moqebelo]
2 [Iridha-, Sandhudha-, Anga.haruwa-dha-, Badha-dha-, Brahaspa.thindha-, Sikura-dha-, Sena.sura-dha-]
2 [nedel^a, pondelok, utorok, streda, s^tvrtok, piatok, sobota]
2 [Nedelja, Ponedeljek, Torek, Sreda, Cxetrtek, Petek, Sobota]
2 [domingo, lunes, martes, miércoles, jueves, viernes, sábado]
2 [sonde, mundey, tude-wroko, dride-wroko, fode-wroko, freyda, Saturday]
7 [Jumapili, Jumatatu, Jumanne, Jumatano, Alhamisi, Ijumaa, Jumamosi]
2 [söndag, måndag, tisdag, onsdag, torsdag, fredag, lordag]
2 [Linggo, Lunes, Martes, Miyerkoles, Huwebes, Biyernes, Sabado]
6 [Lé-pài-jít, Pài-it, Pài-jï, Pài-sañ, Pài-sì, Pài-gÖ., Pài-lák]
7 [wan-ar-tit, wan-tjan, wan-ang-kaan, wan-phoet, wan-pha-ru-hat-sa-boh-die, wan-sook, wan-sao]
5 [Tshipi, Mosupologo, Labobedi, Laboraro, Labone, Labotlhano, Matlhatso]
6 [Pazar, Pazartesi, Sali, Çar,samba, Per,sembe, Cuma, Cumartesi]
2 [nedilya, ponedilok, vivtorok, sereda, chetver, pyatnytsya, subota]
8 [Chu?_Nhâ.t, Thú*_Hai, Thú*_Ba, Thú*_Tu*, Thú*_Na'm, Thú*_Sáu, Thú*_Ba?y]
6 [dydd_Sul, dyds_Llun, dydd_Mawrth, dyds_Mercher, dydd_Iau, dydd_Gwener, dyds_Sadwrn]
3 [Dibeer, Altine, Talaata, Allarba, Al_xebes, Aljuma, Gaaw]
7 [iCawa, uMvulo, uLwesibini, uLwesithathu, uLuwesine, uLwesihlanu, uMgqibelo]
2 [zuntik, montik, dinstik, mitvokh, donershtik, fraytik, shabes]
7 [iSonto, uMsombuluko, uLwesibili, uLwesithathu, uLwesine, uLwesihlanu, uMgqibelo]
7 [Dies_Dominica, Dies_Lunæ, Dies_Martis, Dies_Mercurii, Dies_Iovis, Dies_Veneris, Dies_Saturni]
11 [Bazar_gÜnÜ, Bazar_ærtæsi, Çærs,ænbæ_axs,amò, Çærs,ænbæ_gÜnÜ, CÜmæ_axs,amò, CÜmæ_gÜnÜ, CÜmæ_Senbæ]
2 [Sun, Moon, Mars, Mercury, Jove, Venus, Saturn]
2 [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag]
2 [KoseEraa, GyoOraa, BenEraa, Kuoraa, YOwaaraa, FeEraa, Memenaa]
5 [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Sonnabend]
1 [Domingo, Luns, Terza_feira, Corta_feira, Xoves, Venres, Sábado]
7 [Dies_Solis, Dies_Lunae, Dies_Martis, Dies_Mercurii, Dies_Iovis, Dies_Veneris, Dies_Sabbatum]
12 [xing-_qi-_tiàn, xing-_qi-_yi-., xing-_qi-_èr, xing-_qi-_san-., xing-_qi-_sì, xing-_qi-_wuv., xing-_qi-_liù]
4 [djadomingu, djaluna, djamars, djarason, djaweps, djabièrnè, djasabra]
2 [Killachau, Atichau, Quoyllurchau, Illapachau, Chaskachau, Kuychichau, Intichau]
</pre>
 
=={{header|TSE SAL}}==
<syntaxhighlight lang="tsesal">
STRING PROC FNStringGetExpressionRegularCharacterMetaEscapeS( STRING inS )
STRING s[255] = inS
s = StrReplace( "\", s, "\\", "gn" )
s = StrReplace( "{", s, "\{", "gn" )
s = StrReplace( "[", s, "\[", "gn" )
s = StrReplace( "}", s, "\}", "gn" )
s = StrReplace( "]", s, "\]", "gn" )
s = StrReplace( "*", s, "\*", "gn" )
s = StrReplace( "+", s, "\+", "gn" )
s = StrReplace( "@", s, "\@", "gn" )
s = StrReplace( ".", s, "\.", "gn" )
s = StrReplace( "^", s, "\^", "gn" )
s = StrReplace( "$", s, "\$", "gn" )
s = StrReplace( "|", s, "\|", "gn" )
s = StrReplace( "?", s, "\?", "gn" )
s = StrReplace( "#", s, "\#", "gn" )
RETURN( s )
END
//
INTEGER PROC FNBlockGetAbbreviationLengthMinimumToBufferB( INTEGER buffer1I )
INTEGER B = FALSE
INTEGER downB = TRUE
STRING s[255] = ""
INTEGER foundB = FALSE
INTEGER minI = 1
INTEGER I = 0
INTEGER buffer2I = 0
STRING s1[255] = ""
INTEGER lineColumnStartI = 4 // change this
Set( BREAK, ON )
PushPosition()
PushBlock()
GotoBlockBegin()
WHILE ( ( IsCursorInBlock() ) AND ( downB ) )
IF NOT LFind( "^$", "cgx" )
I = minI - 1
REPEAT
I = I + 1
PushPosition()
buffer2I = CreateTempBuffer()
PopPosition()
BegLine()
REPEAT
IF ( LFind( "{.*}{{[ ]#}|$}\c", "cx" ) )
s = GetFoundText( 1 )
s = Trim( s )
s1 = LeftStr( s, I )
PushPosition()
PushBlock()
GotoBufferId( buffer2I )
foundB = LFind( Format( "^", FNStringGetExpressionRegularCharacterMetaEscapeS( s1 ), "$" ), "gx" )
IF NOT foundB
EndFile()
AddLine( s1 )
ENDIF
PopBlock()
PopPosition()
ENDIF
UNTIL ( ( ( CurrChar() == _AT_EOL_ ) OR ( CurrChar() == _BEYOND_EOL_ ) ) OR ( foundB ) )
AbandonFile( buffer2I )
UNTIL ( NOT ( foundB ) )
ENDIF
IF NOT foundB
PushPosition()
PushBlock()
BegLine()
UnMarkBlock()
MarkStream()
EndLine()
Left()
MarkStream()
Copy()
GotoBufferId( buffer1I )
EndFile()
AddLine( Str( I ) )
GotoColumn( lineColumnStartI )
Paste()
PopBlock()
PopPosition()
ENDIF
downB = Down()
ENDWHILE
B = TRUE
PopPosition()
PopBlock()
RETURN( B )
END
//
PROC Main()
INTEGER bufferI = 0
PushPosition()
bufferI = CreateTempBuffer()
PopPosition()
Message( FNBlockGetAbbreviationLengthMinimumToBufferB( bufferI ) )
GotoBufferId( bufferI )
END
</syntaxhighlight>
{{out}} <pre>
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
2 Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
4 E_djelë E_hënë E_martë E_mërkurë E_enjte E_premte E_shtunë
2 Ehud Segno Maksegno Erob Hamus Arbe Kedame
5 Al_Ahad Al_Ithinin Al_Tholatha'a Al_Arbia'a Al_Kamis Al_Gomia'a Al_Sabit
4 Guiragui Yergou_shapti Yerek_shapti Tchorek_shapti Hink_shapti Ourpat Shapat
2 domingu llunes martes miércoles xueves vienres sábadu
2 Bazar_gÜnÜ Birinci_gÜn Çkinci_gÜn ÜçÜncÜ_gÜn DÖrdÜncÜ_gÜn Bes,inci_gÜn Altòncò_gÜn
6 Igande Astelehen Astearte Asteazken Ostegun Ostiral Larunbat
4 Robi_bar Shom_bar Mongal_bar Budhh_bar BRihashpati_bar Shukro_bar Shoni_bar
2 Nedjelja Ponedeljak Utorak Srijeda Cxetvrtak Petak Subota
5 Disul Dilun Dimeurzh Dimerc'her Diriaou Digwener Disadorn
2 nedelia ponedelnik vtornik sriada chetvartak petak sabota
12 sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk
4 Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte
16 Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh_nah_kay_dzeeneh Tah_neesee_dzeehn_neh Deehn_ghee_dzee-neh Tl-oowey_tts-el_dehlee Dzeentt-ahzee
6 dy_Sul dy_Lun dy_Meurth dy_Mergher dy_You dy_Gwener dy_Sadorn
2 Dimanch Lendi Madi Mèkredi Jedi Vandredi Samdi
2 nedjelja ponedjeljak utorak srijeda cxetvrtak petak subota
2 nede^le ponde^lí úterÿ str^eda c^tvrtek pátek sobota
2 Sondee Mondee Tiisiday Walansedee TOOsedee Feraadee Satadee
2 s0ndag mandag tirsdag onsdag torsdag fredag l0rdag
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 Diman^co Lundo Mardo Merkredo ^Jaùdo Vendredo Sabato
1 pÜhapäev esmaspäev teisipäev kolmapäev neljapäev reede laupäev
7 Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata
2 sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur
2 Yek_Sham'beh Do_Sham'beh Seh_Sham'beh Cha'har_Sham'beh Panj_Sham'beh Jom'eh Sham'beh
2 sunnuntai maanantai tiistai keskiviiko torsktai perjantai lauantai
2 dimanche lundi mardi mercredi jeudi vendredi samedi
4 Snein Moandei Tiisdei Woansdei Tonersdei Freed Sneon
2 Domingo Segunda_feira Martes Mércores Joves Venres Sábado
2 k'vira orshabati samshabati otkhshabati khutshabati p'arask'evi shabati
2 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
2 Kiriaki' Defte'ra Tri'ti Teta'rti Pe'mpti Paraskebi' Sa'bato
3 ravivaar somvaar mangalvaar budhvaar guruvaar shukravaar shanivaar
6 pópule pó`akahi pó`alua pó`akolu pó`ahá pó`alima pó`aono
7 Yom_rishon Yom_sheni Yom_shlishi Yom_revi'i Yom_chamishi Yom_shishi Shabat
3 ravivara somavar mangalavar budhavara brahaspativar shukravara shanivar
3 vasárnap hétfö kedd szerda csütörtök péntek szombat
2 Sunnudagur Mánudagur ╞riδjudagur Miδvikudagar Fimmtudagur FÖstudagur Laugardagur
2 sundio lundio mardio merkurdio jovdio venerdio saturdio
3 Minggu Senin Selasa Rabu Kamis Jumat Sabtu
2 Dominica Lunedi Martedi Mercuridi Jovedi Venerdi Sabbato
4 Dé_Domhnaigh Dé_Luain Dé_Máirt Dé_Ceadaoin Dé_ardaoin Dé_hAoine Dé_Sathairn
2 domenica lunedí martedí mercoledí giovedí venerdí sabato
2 Nichiyou_bi Getzuyou_bi Kayou_bi Suiyou_bi Mokuyou_bi Kin'you_bi Doyou_bi
1 Il-yo-il Wol-yo-il Hwa-yo-il Su-yo-il Mok-yo-il Kum-yo-il To-yo-il
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
3 sve-tdien pirmdien otrdien tresvdien ceturtdien piektdien sestdien
2 Sekmadienis Pirmadienis Antradienis Trec^iadienis Ketvirtadienis Penktadienis S^es^tadienis
3 Wangu Kazooba Walumbe Mukasa Kiwanuka Nnagawonye Wamunyi
12 xing-_qi-_rì xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
3 Jedoonee Jelune Jemayrt Jecrean Jardaim Jeheiney Jesam
3 Jabot Manre Juje Wonje Taije Balaire Jarere
5 geminrongo minòmishi mártes mièrkoles misheushi bèrnashi mishábaro
2 Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu
2 sφndag mandag tirsdag onsdag torsdag fredag lφrdag
7 lo_dimenge lo_diluns lo_dimarç lo_dimèrcres lo_dijòus lo_divendres lo_dissabte
4 djadomingo djaluna djamars djarason djaweps djabièrna djasabra
2 Niedziela Poniedzial/ek Wtorek S,roda Czwartek Pia,tek Sobota
3 Domingo segunda-feire terça-feire quarta-feire quinta-feire sexta-feira såbado
1 Domingo Lunes martes Miercoles Jueves Viernes Sabado
2 Duminicª Luni Mart'i Miercuri Joi Vineri Sâmbªtª
2 voskresenie ponedelnik vtornik sreda chetverg pyatnitsa subbota
4 Sunday Di-luain Di-màirt Di-ciadain Di-ardaoin Di-haoine Di-sathurne
2 nedjelja ponedjeljak utorak sreda cxetvrtak petak subota
5 Sontaha Mmantaha Labobedi Laboraro Labone Labohlano Moqebelo
2 Iridha- Sandhudha- Anga.haruwa-dha- Badha-dha- Brahaspa.thindha- Sikura-dha- Sena.sura-dha-
2 nedel^a pondelok utorok streda s^tvrtok piatok sobota
2 Nedelja Ponedeljek Torek Sreda Cxetrtek Petek Sobota
2 domingo lunes martes miércoles jueves viernes sábado
2 sonde mundey tude-wroko dride-wroko fode-wroko freyda Saturday
7 Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi
2 söndag måndag tisdag onsdag torsdag fredag lordag
2 Linggo Lunes Martes Miyerkoles Huwebes Biyernes Sabado
6 Lé-pài-jít Pài-it Pài-jï Pài-sañ Pài-sì Pài-gÖ. Pài-lák
7 wan-ar-tit wan-tjan wan-ang-kaan wan-phoet wan-pha-ru-hat-sa-boh-die wan-sook wan-sao
5 Tshipi Mosupologo Labobedi Laboraro Labone Labotlhano Matlhatso
6 Pazar Pazartesi Sali Çar,samba Per,sembe Cuma Cumartesi
2 nedilya ponedilok vivtorok sereda chetver pyatnytsya subota
8 Chu?_Nhâ.t Thú*_Hai Thú*_Ba Thú*_Tu* Thú*_Na'm Thú*_Sáu Thú*_Ba?y
6 dydd_Sul dyds_Llun dydd_Mawrth dyds_Mercher dydd_Iau dydd_Gwener dyds_Sadwrn
3 Dibeer Altine Talaata Allarba Al_xebes Aljuma Gaaw
7 iCawa uMvulo uLwesibini uLwesithathu uLuwesine uLwesihlanu uMgqibelo
2 zuntik montik dinstik mitvokh donershtik fraytik shabes
7 iSonto uMsombuluko uLwesibili uLwesithathu uLwesine uLwesihlanu uMgqibelo
7 Dies_Dominica Dies_Lunæ Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Saturni
11 Bazar_gÜnÜ Bazar_ærtæsi Çærs,ænbæ_axs,amò Çærs,ænbæ_gÜnÜ CÜmæ_axs,amò CÜmæ_gÜnÜ CÜmæ_Senbæ
2 Sun Moon Mars Mercury Jove Venus Saturn
2 zondag maandag dinsdag woensdag donderdag vrijdag zaterdag
2 KoseEraa GyoOraa BenEraa Kuoraa YOwaaraa FeEraa Memenaa
5 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Sonnabend
1 Domingo Luns Terza_feira Corta_feira Xoves Venres Sábado
7 Dies_Solis Dies_Lunae Dies_Martis Dies_Mercurii Dies_Iovis Dies_Veneris Dies_Sabbatum
12 xing-_qi-_tiàn xing-_qi-_yi-. xing-_qi-_èr xing-_qi-_san-. xing-_qi-_sì xing-_qi-_wuv. xing-_qi-_liù
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau
</pre>
 
=={{header|VBA}}==
Function :
<langsyntaxhighlight lang="vb">Function MinimalLenght(strLine As String) As Integer
Dim myVar As Variant, I As Integer, Flag As Boolean, myColl As Collection, Count As Integer
myVar = Split(strLine, " ")
Line 5,709 ⟶ 7,815:
Loop While Not Flag
MinimalLenght = Count
End Function</langsyntaxhighlight>
To call it :
<langsyntaxhighlight lang="vb">Sub Main_Abbr_Auto()
Dim Nb As Integer, s As String, Result() As String, c As Integer
Nb = FreeFile
Line 5,726 ⟶ 7,832:
Wend
Close #Nb
End Sub</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 5,826 ⟶ 7,932:
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau</pre>
 
=={{header|VBScript}}==
<syntaxhighlight lang="vb">
sub print(s) wscript.stdout.writeline s :end sub
 
set d=createobject("Scripting.Dictionary")
set fso=createobject("Scripting.Filesystemobject")
 
const fn="weekdays_ansi.txt"
sfn=WScript.ScriptFullName
sfn= Left(sfn, InStrRev(sfn, "\"))
set f=fso.opentextfile(sfn & fn,1)
 
while not f.atendofstream
s=f.readline
if s=vbNullString then
print " "
else
a=split(trim(s)," ")
for abrlen=1 to 14
d.removeall
for wd=0 to 6
k=left(a(wd),abrlen)
if d.exists(k) then
exit for
else
d.add k,""
end if
next 'wd
if wd>6 then exit for
next 'abrlen
b=right(" " & abrlen,2)
for wd=0 to 6
b=b &" "& left(a(wd),abrlen)
next
print b
end if
wend 'line
f.close
 
</syntaxhighlight>
{{out}}
<pre>
2 Su Mo Tu We Th Fr Sa
2 So Ma Di Wo Do Vr Sa
4 E_dj E_hë E_ma E_më E_en E_pr E_sh
2 Eh Se Ma Er Ha Ar Ke
5 Al_Ah Al_It Al_Th Al_Ar Al_Ka Al_Go Al_Sa
4 Guir Yerg Yere Tcho Hink Ourp Shap
2 do ll ma mi xu vi sá
2 Ba Bi Çk Üç DÖ Be Al
6 Igande Astele Astear Asteaz Ostegu Ostira Larunb
4 Robi Shom Mong Budh BRih Shuk Shon
2 Ne Po Ut Sr Cx Pe Su
5 Disul Dilun Dimeu Dimer Diria Digwe Disad
2 ne po vt sr ch pe sa
12 sing_kei_yah sing_kei_yat sing_kei_yee sing_kei_saa sing_kei_sie sing_kei_ng sing_kei_luk
4 Dium Dill Dima Dime Dijo Dive Diss
15 Dzeenkk-eh Dzeehn_kk-ehreh Dzeehn_kk-ehreh Tah_neesee_dzee Deehn_ghee_dzee Tl-oowey_tts-el Dzeentt-ahzee
6 dy_Sul dy_Lun dy_Meu dy_Mer dy_You dy_Gwe dy_Sad
2 Di Le Ma Mè Je Va Sa
2 ne po ut sr cx pe su
2 ne po út st c^ pá so
2 So Mo Ti Wa TO Fe Sa
2 s0 ma ti on to fr l0
2 zo ma di wo do vr za
2 Di Lu Ma Me ^J Ve Sa
1 p e t k n r l
 
</pre>
 
=={{header|Visual Basic .NET}}==
{{trans|C#}}
<langsyntaxhighlight lang="vbnet">Module Module1
 
Sub Main()
Line 5,877 ⟶ 8,053:
End Sub
 
End Module</langsyntaxhighlight>
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 5,977 ⟶ 8,153:
4 djadomingu djaluna djamars djarason djaweps djabièrnè djasabra
2 Killachau Atichau Quoyllurchau Illapachau Chaskachau Kuychichau Intichau</pre>
 
=={{header|V (Vlang)}}==
{{trans|Go}}
<syntaxhighlight lang="v (vlang)">import os
fn distinct_strings(strs []string) []string {
len := strs.len
mut set := map[string]bool{}
mut distinct := []string{cap: len}
for str in strs {
if str !in set {
distinct << str
set[str] = true
}
}
return distinct
}
fn take_runes(s string, n int) string {
mut i := 0
for j in 0..s.len {
if i == n {
return s[..j]
}
i++
}
return s
}
fn main() {
lines := os.read_lines('days_of_week.txt')?
mut line_count := 0
for l in lines {
mut line := l
 
line = line.trim(' ')
line_count++
if line == "" {
println('')
continue
}
days := line.split(' ')
if days.len != 7 {
println("There aren't 7 days in line $line_count")
return
}
if distinct_strings(days).len != 7 { // implies some days have the same name
println(" ∞ $line")
continue
}
for abbrev_len := 1; ; abbrev_len++ {
mut abbrevs := []string{len: days.len}
for i := 0; i < days.len; i++ {
abbrevs[i] = take_runes(days[i], abbrev_len)
}
if distinct_strings(abbrevs).len == 7 {
println("${abbrev_len:2} $line")
break
}
}
}
}</syntaxhighlight>
 
{{out}}
<pre>
Same as Go entry.
</pre>
 
=={{header|Wren}}==
Line 5,983 ⟶ 8,226:
{{libheader|Wren-seq}}
{{libheader|Wren-fmt}}
<langsyntaxhighlight ecmascriptlang="wren">import "io" for File
import "./pattern" for Pattern
import "./seq" for Lst
import "./fmt" for Fmt
 
var p = Pattern.new("+1/s")
Line 6,011 ⟶ 8,254:
}
i = i + 1
}</langsyntaxhighlight>
 
{{out}}
Line 6,117 ⟶ 8,360:
 
=={{header|Yabasic}}==
<syntaxhighlight lang="yabasic">
<lang Yabasic>
a = open("days_of_week.txt", "r")
 
Line 6,145 ⟶ 8,388:
until(s)
return d
end sub</langsyntaxhighlight>
 
=={{header|zkl}}==
zkl doesn't grok UTF-8 so I'm using a byte by byte check. It works surprisingly well.
<langsyntaxhighlight lang="zkl">nds:=File("daysOfWeek.txt").read().howza(11) // stripped lines
.pump(List,Void.Filter,fcn(day){
d,N,m := day.split(),d.len(),(0).max(d.apply("len")); // N==7
Line 6,159 ⟶ 8,402:
return(m,day); // no match nowhere
});
foreach n,s in (nds){ println("%3d %s".fmt(n,s)); }</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
26

edits