Abbreviations, automatic: Difference between revisions
m
addded scrolling output
Alpha bravo (talk | contribs) (Added AutoHotkey) |
m (addded scrolling output) |
||
(16 intermediate revisions by 11 users not shown) | |||
Line 141:
{{trans|Python}}
<
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)</
{{out}}
Line 269:
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B version Buster 64 bits}}
<syntaxhighlight lang="aarch64 assembly">
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program abbrAuto64.s */
Line 743:
.include "../includeARM64.inc"
</syntaxhighlight>
<pre>
Nom du fichier : listDays.txt
Line 848:
=={{header|Ada}}==
<
with Ada.Strings.Fixed;
with Ada.Strings.Maps;
Line 918:
Process (Get_Line);
end loop;
end Abbreviations;</
{{out}}
<pre style="height: 20ex;">
Line 1,024:
=={{header|Amazing Hopper}}==
<syntaxhighlight lang="amazing hopper">
#include <jambo.h>
Line 1,053:
End If
End
</syntaxhighlight>
{{out}}
<pre>
Line 1,066:
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi}}
<syntaxhighlight lang="arm assembly">
/* ARM assembly Raspberry PI */
/* program abbrAuto.s */
Line 1,487:
/***************************************************/
.include "../affichage.inc"
</syntaxhighlight>
<pre>
Nom du fichier : listDays.txt
Line 1,592:
=={{header|AutoHotkey}}==
<
len := prev := 0
Days := StrSplit(line, " ")
Line 1,613:
}
return len
}</
Examples:<
(
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 1,634:
}
MsgBox % result
return</
{{out}}
<pre>2 > Su Mo Tu We Th Fr Sa
Line 1,642:
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">
# syntax: GAWK -f ABBREVIATIONS_AUTOMATIC.AWK ABBREVIATIONS_AUTOMATIC.TXT
{ dow_arr[NR] = $0 }
Line 1,675 ⟶ 1,715:
}
function max(x,y) { return((x > y) ? x : y) }
</syntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 1,801 ⟶ 1,841:
=={{header|C}}==
{{trans|C#}}
<
#include <stdlib.h>
#include <string.h>
Line 1,895 ⟶ 1,935:
return 0;
}</
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 1,998 ⟶ 2,038:
=={{header|C sharp|C#}}==
<
using System.Collections.Generic;
Line 2,049 ⟶ 2,089:
}
}
}</
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,152 ⟶ 2,192:
=={{header|C++}}==
{{trans|C#}}
<
#include <iostream>
#include <fstream>
Line 2,217 ⟶ 2,257:
return 0;
}</
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,320 ⟶ 2,360:
=={{header|COBOL}}==
{{works with|GnuCOBOL|3.1.2.0}}
<
PROGRAM-ID. AUTO-ABBREVIATIONS.
Line 2,478 ⟶ 2,518:
CLOSE DOW.
STOP RUN.
</syntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 2,587 ⟶ 2,627:
=={{header|Common Lisp}}==
It uses the standard library split-sequence to split the string into words.
<
(defun max-mismatch (list)
(if (cdr list)
Line 2,597 ⟶ 2,637:
((null row) t)
(format t "~d ~a~%" (1+ (max-mismatch (SPLIT-SEQUENCE:split-sequence #\Space row))) row) ))
</syntaxhighlight>
{{out}}
Line 2,703 ⟶ 2,743:
=={{header|D}}==
{{trans|Kotlin}}
<
import std.exception;
import std.range;
Line 2,738 ⟶ 2,778:
}
}
}</
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,846 ⟶ 2,886:
{{libheader| System.IOUtils}}
{{Trans|Kotlin}}
<syntaxhighlight lang="delphi">
program Abbreviations_Automatic;
Line 2,934 ⟶ 2,974:
end;
Readln;
end.</
=={{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,941 ⟶ 3,125:
The output is of the set of abbreviations. These are not sorted correctly and some encoding errors remain.
<
-module(abbreviateweekdays).
-export([ main/0 ]).
Line 2,978 ⟶ 3,162:
{ok, Device} = (file:open("weekdays.txt", read)),
read_lines(Device, 1).
</syntaxhighlight>
{{out}}
<pre>
Line 3,011 ⟶ 3,195:
=={{header|F_Sharp|F#}}==
===The function===
<
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>
===The Task - Demonstrate the function===
<
fN ["Sunday"; "Monday"; "Tuesday"; "Wednesday"; "Thursday"; "Friday"; "Saturday"] // -> 2
fN ["Sondag"; "Maandag"; "Dinsdag"; "Woensdag"; "Donderdag"; "Vrydag"; "Saterdag"] // -> 2
Line 3,022 ⟶ 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>
=={{header|Factor}}==
Line 3,029 ⟶ 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.
<
sequences sets splitting ;
IN: rosetta-code.abbreviations-automatic
Line 3,057 ⟶ 3,241:
header "day-names.txt" utf8 [ body ] with-file-reader ;
MAIN: abbreviations</
{{out}}
<pre style="height:45ex">
Line 3,162 ⟶ 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}}
<
import(
Line 3,240 ⟶ 3,654:
}
}
}</
{{out}}
Line 3,249 ⟶ 3,663:
=={{header|Groovy}}==
{{trans|Java}}
<
static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("days_of_week.txt"), "utf-8"))
Line 3,293 ⟶ 3,707:
}
}
}</
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,395 ⟶ 3,809:
=={{header|Haskell}}==
<
import qualified Data.Set as S
Line 3,422 ⟶ 3,836:
]
. return
<$> lines s</
{{Out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,436 ⟶ 3,850:
=={{header|J}}==
<
abbreviation_length =: monad define
N =. # y
Line 3,454 ⟶ 3,868:
L =. abbreviation_length&> a
((' ',~":)&> L) ,"1 lines
)</
<pre>
Line 3,477 ⟶ 3,891:
=={{header|Java}}==
{{trans|D}}
<
import java.nio.file.Files;
import java.nio.file.Path;
Line 3,528 ⟶ 3,942:
}
}
}</
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,632 ⟶ 4,046:
===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.
<
Array.prototype.hasDoubles = function() {
let arr = this.slice();
Line 3,662 ⟶ 4,076:
document.write(`<p>(${l}): ${days.join('. ')}.</p>`);
}
</syntaxhighlight>
{{out}}
Line 3,774 ⟶ 4,188:
{{Works with|MacOS JXA}}
<
"use strict";
Line 3,934 ⟶ 4,348:
// MAIN ---
return main();
})();</
{{Out}}
<pre>2: Su,Mo,Tu,We,Th,Fr,Sa
Line 3,946 ⟶ 4,360:
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}}==
<
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
Line 4,074 ⟶ 4,524:
processweek(text)
</
(Showing first 10 lines.)
Sunday Monday Tuesday Wednesday Thursday Friday Saturday => ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], which are length 2
Line 4,092 ⟶ 4,542:
===Original O(''n<sup>2</sup>'') solution===
where ''n'' is the number of strings in each line.
<
import java.io.File
Line 4,120 ⟶ 4,570:
}
}
}</
{{out}}
Line 4,226 ⟶ 4,676:
===Alternative O(''n log n'') solution based on sorting===
<
import kotlin.math.max
Line 4,259 ⟶ 4,709:
.forEach(::println)
}
}</
{{out}}
Line 4,364 ⟶ 4,814:
=={{header|Ksh}}==
<
#!/bin/ksh
Line 4,444 ⟶ 4,894:
(( $((RANDOM%100+1))<=5 )) && { printf "%d. " $((i+1)) ; langs[i].print_wk ;}
done</
{{out}}<pre>
15. (4) Dium Dill Dima Dime Dijo Dive Diss
Line 4,455 ⟶ 4,905:
=={{header|Lua}}==
<
local wa = {}
for i in string.gmatch(line, "%S+") do
Line 4,505 ⟶ 4,955:
end
end
end</
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 4,607 ⟶ 5,057:
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<syntaxhighlight 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 4,621 ⟶ 5,071:
RequiredAbbreviationLength[""]="";
RequiredAbbreviationLength[input_String]:=Max[StringLength/@ShortestUniqueAbbreviations[StringSplit[input]]];
</syntaxhighlight>
{{out}}
Line 4,742 ⟶ 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">
import sets
import unicode
Line 4,774 ⟶ 5,224:
else:
echo line
</syntaxhighlight>
===Using a sorted list===
<syntaxhighlight lang="nim">
import algorithm
import unicode
Line 4,808 ⟶ 5,258:
else:
echo line
</syntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 4,914 ⟶ 5,364:
=={{header|Objeck}}==
{{trans|Java}}
<
use Collection;
Line 4,979 ⟶ 5,429:
};
}
}</
{{out}}
Line 5,086 ⟶ 5,536:
Output is the same as for Raku.
{{trans|Raku}}
<
use utf8;
binmode STDOUT, ":utf8";
Line 5,106 ⟶ 5,556:
while ($_ = <$fh>) {
print "$.) " . auto_abbreviate($_) . ' ' . $_;
}</
=={{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+).
<!--<
<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 5,131 ⟶ 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>
<!--</
{{out}}
<pre>
Line 5,144 ⟶ 5,594:
=={{header|Picat}}==
{{works with|Picat}}
<syntaxhighlight lang="picat">
import util.
Line 5,178 ⟶ 5,628:
end
end.
</syntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 5,284 ⟶ 5,734:
=={{header|Prolog}}==
{{works with|SWI Prolog}}
<
sort(Day_names, Sorted_names),
minimum_abbreviation_length(Sorted_names, Min_length, 1).
Line 5,336 ⟶ 5,786:
main:-
process_file("days_of_week.txt").</
{{out}}
Line 5,442 ⟶ 5,892:
=={{header|PureBasic}}==
<
#TZ="|"
#FZ="@"
Line 5,487 ⟶ 5,937:
While CompareLetters(txt,letters) : letters+1 : Wend
ProcedureReturn letters
EndProcedure</
{{out}}
<pre style="height:45ex"> 2: Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 5,691 ⟶ 6,141:
{{works with|Python|3.6}}
{{trans|Kotlin}}
<
words = line.split()
word_count = len(words)
Line 5,718 ⟶ 6,168:
print()
automatic_abbreviations('daysOfWeek.txt', 7)</
{{out}}
Line 5,825 ⟶ 6,275:
===Functional===
In terms of generators:
<
from itertools import (accumulate,
repeat)
Line 5,878 ⟶ 6,328:
if __name__ == '__main__':
main()</
{{out}}
<pre style="height:45ex">
Line 5,988 ⟶ 6,438:
The generic primitives are curried, allowing for more flexible composition:
{{Works with|Python|3}}
<
from itertools import (accumulate, chain)
Line 6,111 ⟶ 6,561:
# MAIN ---
if __name__ == '__main__':
main()</
{{Out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 6,126 ⟶ 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}}==
<
(require racket/set)
Line 6,146 ⟶ 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)))</
{{out}}
Line 6,162 ⟶ 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"
return Nil unless my @words = $string.words;
return $_ if @words».substr(0, $_).Set == @words for 1 .. @words».chars.max;
Line 6,169 ⟶ 6,748:
# Testing
say ++$, ') ', .&auto-abbreviate, ' ', $_ for './DoWAKA.txt'.IO.lines;</
{{out}}
<pre style="height:40ex;overflow:scroll;">1) 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 6,273 ⟶ 6,852:
=={{header|Red}}==
<syntaxhighlight lang="red">
Red []
;; read and convert data to a string - to char conversion is neccessary to avoid
Line 6,304 ⟶ 6,883:
print [min line] ;; print automatically reduces all words in block
]
</syntaxhighlight>
{{Out}}
<pre>
Line 6,326 ⟶ 6,905:
=={{header|REXX}}==
<
Do While lines(iFID)\==0
If
Say ''
Else Do
Say right(minLen,4) ' ' days /*display a somewhat formatted output. */
If minlen='????' Then
End
End
Exit
/*----------------------------------------------------------------------------------*/
abb: Procedure
Parse Arg daylist /* obtain list of words
dayn=words(daylist)
day.=''
L=0
Do j=1 for dayn
day.j=word(daylist,j)
L.j=length(day.j)
L= max(L,L.j)
End
/* [?] 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= when using the default input file containing the complete list of words:}}
<pre style="height:45ex">
Line 6,463 ⟶ 7,057:
=={{header|Ruby}}==
<
File.read("daynames.txt").each_line do |line|
Line 6,470 ⟶ 7,064:
puts "Minimum size: #{abbr.values.max_by(&:size).size}", abbr.inspect, "\n"
end
</syntaxhighlight>
{{out}}
<pre>Minimum size: 2
Line 6,505 ⟶ 7,099:
=={{header|Rust}}==
<
* Abbreviations from tintenalarm.de
*/
Line 6,557 ⟶ 7,151:
}
num
}</
{{out}}
<pre style="height:45ex">
Line 6,663 ⟶ 7,257:
===Functional programmed===
====build.sbt====
<
scalaVersion := "2.13.0"
version := "0.1"
Line 6,669 ⟶ 7,263:
homepage := Some(url("http://rosettacode.org/wiki/Abbreviations,_automatic#Scala"))
libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.3.0"</
====AbbreviationsAuto.scala====
<
private val wd = os.pwd
Line 6,693 ⟶ 7,287:
.foreach(line => println(processLine(line)))
}</
{{out}}
<pre style="height:45ex"> ""
Line 6,794 ⟶ 7,388:
=={{header|SenseTalk}}==
<
put 1 into abbreviationLength
put the number of items in days into len
Line 6,811 ⟶ 7,405:
add 1 to abbreviationLength
end repeat
end AbbreviationsAutomatic</
<
put the defaultStringEncoding into savedEncoding
Line 6,833 ⟶ 7,427:
close file myFile
put savedEncoding into the defaultStringEncoding</
{{out}}
<pre>
Line 6,851 ⟶ 7,445:
=={{header|Tcl}}==
<
set f [open abbreviations_automatic_weekdays.txt]
set lines [split [read -nonewline $f] \n]
Line 6,869 ⟶ 7,463:
incr i
puts "$i $days"
}</
{{out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 6,886 ⟶ 7,480:
=={{header|Transd}}==
<
MainModule : {
Line 6,898 ⟶ 7,492:
(lout (+ len 1) " " days))
) ) )
}</
<pre style="height:45ex">
2 [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
Line 7,002 ⟶ 7,596:
=={{header|TSE SAL}}==
<syntaxhighlight lang="tsesal">
STRING PROC FNStringGetExpressionRegularCharacterMetaEscapeS( STRING inS )
STRING s[255] = inS
Line 7,099 ⟶ 7,693:
GotoBufferId( bufferI )
END
</syntaxhighlight>
{{out}} <pre>
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 7,203 ⟶ 7,797:
=={{header|VBA}}==
Function :
<
Dim myVar As Variant, I As Integer, Flag As Boolean, myColl As Collection, Count As Integer
myVar = Split(strLine, " ")
Line 7,221 ⟶ 7,815:
Loop While Not Flag
MinimalLenght = Count
End Function</
To call it :
<
Dim Nb As Integer, s As String, Result() As String, c As Integer
Nb = FreeFile
Line 7,238 ⟶ 7,832:
Wend
Close #Nb
End Sub</
{{out}}
<pre style="height:45ex">2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 7,340 ⟶ 7,934:
=={{header|VBScript}}==
<syntaxhighlight lang="vb">
sub print(s) wscript.stdout.writeline s :end sub
Line 7,378 ⟶ 7,972:
f.close
</syntaxhighlight>
{{out}}
<pre>
Line 7,411 ⟶ 8,005:
=={{header|Visual Basic .NET}}==
{{trans|C#}}
<
Sub Main()
Line 7,459 ⟶ 8,053:
End Sub
End Module</
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 7,560 ⟶ 8,154:
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 {
Line 7,620 ⟶ 8,214:
}
}
}</
{{out}}
Line 7,632 ⟶ 8,226:
{{libheader|Wren-seq}}
{{libheader|Wren-fmt}}
<
import "./pattern" for Pattern
import "./seq" for Lst
import "./fmt" for Fmt
var p = Pattern.new("+1/s")
Line 7,660 ⟶ 8,254:
}
i = i + 1
}</
{{out}}
Line 7,766 ⟶ 8,360:
=={{header|Yabasic}}==
<syntaxhighlight lang="yabasic">
a = open("days_of_week.txt", "r")
Line 7,794 ⟶ 8,388:
until(s)
return d
end sub</
=={{header|zkl}}==
zkl doesn't grok UTF-8 so I'm using a byte by byte check. It works surprisingly well.
<
.pump(List,Void.Filter,fcn(day){
d,N,m := day.split(),d.len(),(0).max(d.apply("len")); // N==7
Line 7,808 ⟶ 8,402:
return(m,day); // no match nowhere
});
foreach n,s in (nds){ println("%3d %s".fmt(n,s)); }</
{{out}}
<pre style="height:45ex">
|