Abbreviations, automatic: Difference between revisions

m
syntax highlighting fixup automation
(Added AutoHotkey)
m (syntax highlighting fixup automation)
Line 141:
{{trans|Python}}
 
<langsyntaxhighlight lang=11l>F shortest_abbreviation_length(line, list_size)
V words = line.split(‘ ’)
V word_count = words.len
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}}
<langsyntaxhighlight 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 848:
 
=={{header|Ada}}==
<langsyntaxhighlight lang=Ada>with Ada.Containers.Indefinite_Vectors;
with Ada.Strings.Fixed;
with Ada.Strings.Maps;
Line 918:
Process (Get_Line);
end loop;
end Abbreviations;</langsyntaxhighlight>
{{out}}
<pre style="height: 20ex;">
Line 1,024:
 
=={{header|Amazing Hopper}}==
<langsyntaxhighlight lang=Amazing Hopper>
#include <jambo.h>
 
Line 1,053:
End If
End
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 1,066:
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi}}
<langsyntaxhighlight lang=ARM Assembly>
/* ARM assembly Raspberry PI */
/* program abbrAuto.s */
Line 1,487:
/***************************************************/
.include "../affichage.inc"
</syntaxhighlight>
</lang>
<pre>
Nom du fichier : listDays.txt
Line 1,592:
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight lang=AutoHotkey>AutoAbbreviations(line){
len := prev := 0
Days := StrSplit(line, " ")
Line 1,613:
}
return len
}</langsyntaxhighlight>
Examples:<langsyntaxhighlight lang=AutoHotkey>data := "
(
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 1,634:
}
MsgBox % result
return</langsyntaxhighlight>
{{out}}
<pre>2 > Su Mo Tu We Th Fr Sa
Line 1,644:
 
=={{header|AWK}}==
<langsyntaxhighlight lang=AWK>
# syntax: GAWK -f ABBREVIATIONS_AUTOMATIC.AWK ABBREVIATIONS_AUTOMATIC.TXT
{ dow_arr[NR] = $0 }
Line 1,675:
}
function max(x,y) { return((x > y) ? x : y) }
</syntaxhighlight>
</lang>
{{out}}
<pre style="height:45ex">
Line 1,801:
=={{header|C}}==
{{trans|C#}}
<langsyntaxhighlight lang=c>#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Line 1,895:
 
return 0;
}</langsyntaxhighlight>
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 1,998:
 
=={{header|C sharp|C#}}==
<langsyntaxhighlight lang=csharp>using System;
using System.Collections.Generic;
 
Line 2,049:
}
}
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,152:
=={{header|C++}}==
{{trans|C#}}
<langsyntaxhighlight lang=cpp>#include <iomanip>
#include <iostream>
#include <fstream>
Line 2,217:
 
return 0;
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,320:
=={{header|COBOL}}==
{{works with|GnuCOBOL|3.1.2.0}}
<langsyntaxhighlight lang=cobol> IDENTIFICATION DIVISION.
PROGRAM-ID. AUTO-ABBREVIATIONS.
 
Line 2,478:
CLOSE DOW.
STOP RUN.
</syntaxhighlight>
</lang>
{{out}}
<pre style="height:45ex">
Line 2,587:
=={{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,597:
((null row) t)
(format t "~d ~a~%" (1+ (max-mismatch (SPLIT-SEQUENCE:split-sequence #\Space row))) row) ))
</syntaxhighlight>
</lang>
 
{{out}}
Line 2,703:
=={{header|D}}==
{{trans|Kotlin}}
<langsyntaxhighlight lang=D>import std.conv;
import std.exception;
import std.range;
Line 2,738:
}
}
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 2,846:
{{libheader| System.IOUtils}}
{{Trans|Kotlin}}
<langsyntaxhighlight lang=Delphi>
program Abbreviations_Automatic;
 
Line 2,934:
end;
Readln;
end.</langsyntaxhighlight>
 
=={{header|Erlang}}==
Line 2,941:
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,978:
{ok, Device} = (file:open("weekdays.txt", read)),
read_lines(Device, 1).
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 3,011:
=={{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 3,022:
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 3,029:
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 3,057:
header "day-names.txt" utf8 [ body ] with-file-reader ;
 
MAIN: abbreviations</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 3,166:
=={{header|Go}}==
{{trans|Kotlin}}
<langsyntaxhighlight lang=go>package main
 
import(
Line 3,240:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 3,249:
=={{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 3,293:
}
}
}</langsyntaxhighlight>
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,395:
 
=={{header|Haskell}}==
<langsyntaxhighlight lang=haskell>import Data.List (inits, intercalate, transpose)
import qualified Data.Set as S
 
Line 3,422:
]
. return
<$> lines s</langsyntaxhighlight>
{{Out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,436:
 
=={{header|J}}==
<langsyntaxhighlight lang=J>NB. y is words in boxes
abbreviation_length =: monad define
N =. # y
Line 3,454:
L =. abbreviation_length&> a
((' ',~":)&> L) ,"1 lines
)</langsyntaxhighlight>
 
<pre>
Line 3,477:
=={{header|Java}}==
{{trans|D}}
<langsyntaxhighlight lang=Java>import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
Line 3,528:
}
}
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 3,632:
===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,662:
document.write(`<p>(${l}): ${days.join('. ')}.</p>`);
}
</syntaxhighlight>
</lang>
 
{{out}}
Line 3,774:
 
{{Works with|MacOS JXA}}
<langsyntaxhighlight lang=javascript>(() => {
"use strict";
 
Line 3,934:
// MAIN ---
return main();
})();</langsyntaxhighlight>
{{Out}}
<pre>2: Su,Mo,Tu,We,Th,Fr,Sa
Line 3,948:
 
=={{header|Julia}}==
<langsyntaxhighlight lang=julia>const text = """
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag
Line 4,074:
 
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 4,092:
===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 4,120:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 4,226:
 
===Alternative O(''n log n'') solution based on sorting===
<langsyntaxhighlight lang=scala>import java.io.File
import kotlin.math.max
 
Line 4,259:
.forEach(::println)
}
}</langsyntaxhighlight>
 
{{out}}
Line 4,364:
 
=={{header|Ksh}}==
<langsyntaxhighlight lang=ksh>
#!/bin/ksh
 
Line 4,444:
(( $((RANDOM%100+1))<=5 )) && { printf "%d. " $((i+1)) ; langs[i].print_wk ;}
done</langsyntaxhighlight>
{{out}}<pre>
15. (4) Dium Dill Dima Dime Dijo Dive Diss
Line 4,455:
 
=={{header|Lua}}==
<langsyntaxhighlight lang=lua>function split(line)
local wa = {}
for i in string.gmatch(line, "%S+") do
Line 4,505:
end
end
end</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 4,607:
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight 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:
RequiredAbbreviationLength[""]="";
RequiredAbbreviationLength[input_String]:=Max[StringLength/@ShortestUniqueAbbreviations[StringSplit[input]]];
</syntaxhighlight>
</lang>
 
{{out}}
Line 4,742:
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===
<langsyntaxhighlight lang=Nim>
import sets
import unicode
Line 4,774:
else:
echo line
</syntaxhighlight>
</lang>
===Using a sorted list===
<langsyntaxhighlight lang=Nim>
import algorithm
import unicode
Line 4,808:
else:
echo line
</syntaxhighlight>
</lang>
{{out}}
<pre style="height:45ex">
Line 4,914:
=={{header|Objeck}}==
{{trans|Java}}
<langsyntaxhighlight lang=objeck>use System.IO.File;
use Collection;
 
Line 4,979:
};
}
}</langsyntaxhighlight>
 
{{out}}
Line 5,086:
Output is the same as for Raku.
{{trans|Raku}}
<langsyntaxhighlight lang=perl>use strict;
use utf8;
binmode STDOUT, ":utf8";
Line 5,106:
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 lang=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 5,131:
<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 5,144:
=={{header|Picat}}==
{{works with|Picat}}
<langsyntaxhighlight lang=Picat>
import util.
 
Line 5,178:
end
end.
</syntaxhighlight>
</lang>
{{out}}
<pre style="height:45ex">
Line 5,284:
=={{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 5,336:
 
main:-
process_file("days_of_week.txt").</langsyntaxhighlight>
 
{{out}}
Line 5,442:
 
=={{header|PureBasic}}==
<langsyntaxhighlight lang=PureBasic>EnableExplicit
#TZ="|"
#FZ="@"
Line 5,487:
While CompareLetters(txt,letters) : letters+1 : Wend
ProcedureReturn letters
EndProcedure</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> 2: Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 5,691:
{{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 5,718:
print()
 
automatic_abbreviations('daysOfWeek.txt', 7)</langsyntaxhighlight>
 
{{out}}
Line 5,825:
===Functional===
In terms of generators:
<langsyntaxhighlight lang=python>import operator
from itertools import (accumulate,
repeat)
Line 5,878:
 
if __name__ == '__main__':
main()</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 5,988:
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 6,111:
# MAIN ---
if __name__ == '__main__':
main()</langsyntaxhighlight>
{{Out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 6,129:
=={{header|Racket}}==
 
<langsyntaxhighlight lang=racket>#lang racket
 
(require racket/set)
Line 6,146:
["" ""]
[(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 6,162:
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.
 
<langsyntaxhighlight lang=perl6>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 6,169:
 
# 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 6,273:
 
=={{header|Red}}==
<langsyntaxhighlight lang=Red>
Red []
;; read and convert data to a string - to char conversion is neccessary to avoid
Line 6,304:
print [min line] ;; print automatically reduces all words in block
]
</syntaxhighlight>
</lang>
{{Out}}
<pre>
Line 6,326:
 
=={{header|REXX}}==
<langsyntaxhighlight lang=rexx>/*REXX program finds the minimum length abbreviation for a lists of words (from a file).*/
parse arg uw /*obtain optional arguments from the CL*/
iFID= 'ABBREV_A.TAB' /*name of the file that has the table. */
Line 6,354:
leave m /*a good abbreviation length was found.*/
end /*m*/
return m</langsyntaxhighlight>
{{out|output|text=&nbsp; when using the default input file containing the complete list of words:}}
<pre style="height:45ex">
Line 6,463:
=={{header|Ruby}}==
 
<langsyntaxhighlight lang=ruby>require "abbrev"
File.read("daynames.txt").each_line do |line|
Line 6,470:
puts "Minimum size: #{abbr.values.max_by(&:size).size}", abbr.inspect, "\n"
end
</syntaxhighlight>
</lang>
{{out}}
<pre>Minimum size: 2
Line 6,505:
 
=={{header|Rust}}==
<langsyntaxhighlight lang=c>/**
* Abbreviations from tintenalarm.de
*/
Line 6,557:
}
num
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
Line 6,663:
===Functional programmed===
====build.sbt====
<langsyntaxhighlight lang=Scala>name := "Abbreviations-automatic"
scalaVersion := "2.13.0"
version := "0.1"
Line 6,669:
homepage := Some(url("http://rosettacode.org/wiki/Abbreviations,_automatic#Scala"))
 
libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.3.0"</langsyntaxhighlight>
====AbbreviationsAuto.scala====
<langsyntaxhighlight lang=Scala>object AbbreviationsAuto extends App {
private val wd = os.pwd
 
Line 6,693:
.foreach(line => println(processLine(line)))
 
}</langsyntaxhighlight>
{{out}}
<pre style="height:45ex"> ""
Line 6,794:
 
=={{header|SenseTalk}}==
<langsyntaxhighlight lang=sensetalk>function AbbreviationsAutomatic days
put 1 into abbreviationLength
put the number of items in days into len
Line 6,811:
add 1 to abbreviationLength
end repeat
end AbbreviationsAutomatic</langsyntaxhighlight>
<langsyntaxhighlight lang=sensetalk>put "Weekdays.txt" into myFile
 
put the defaultStringEncoding into savedEncoding
Line 6,833:
close file myFile
 
put savedEncoding into the defaultStringEncoding</langsyntaxhighlight>
{{out}}
<pre>
Line 6,851:
 
=={{header|Tcl}}==
<langsyntaxhighlight lang=tcl>
set f [open abbreviations_automatic_weekdays.txt]
set lines [split [read -nonewline $f] \n]
Line 6,869:
incr i
puts "$i $days"
}</langsyntaxhighlight>
{{out}}
<pre>2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 6,886:
 
=={{header|Transd}}==
<langsyntaxhighlight lang=scheme>#lang transd
 
MainModule : {
Line 6,898:
(lout (+ len 1) " " days))
) ) )
}</langsyntaxhighlight>{{out}}
<pre style="height:45ex">
2 [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
Line 7,002:
 
=={{header|TSE SAL}}==
<langsyntaxhighlight lang=TSESAL>
STRING PROC FNStringGetExpressionRegularCharacterMetaEscapeS( STRING inS )
STRING s[255] = inS
Line 7,099:
GotoBufferId( bufferI )
END
</syntaxhighlight>
</lang>
{{out}} <pre>
2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 7,203:
=={{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 7,221:
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 7,238:
Wend
Close #Nb
End Sub</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 7,340:
 
=={{header|VBScript}}==
<syntaxhighlight lang=vb>
<lang vb>
sub print(s) wscript.stdout.writeline s :end sub
 
Line 7,378:
f.close
 
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 7,411:
=={{header|Visual Basic .NET}}==
{{trans|C#}}
<langsyntaxhighlight lang=vbnet>Module Module1
 
Sub Main()
Line 7,459:
End Sub
 
End Module</langsyntaxhighlight>
{{out}}
<pre> 2 Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Line 7,562:
=={{header|Vlang}}==
{{trans|Go}}
<langsyntaxhighlight lang=vlang>import os
fn distinct_strings(strs []string) []string {
Line 7,620:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 7,632:
{{libheader|Wren-seq}}
{{libheader|Wren-fmt}}
<langsyntaxhighlight lang=ecmascript>import "io" for File
import "/pattern" for Pattern
import "/seq" for Lst
Line 7,660:
}
i = i + 1
}</langsyntaxhighlight>
 
{{out}}
Line 7,766:
 
=={{header|Yabasic}}==
<langsyntaxhighlight lang=Yabasic>
a = open("days_of_week.txt", "r")
 
Line 7,794:
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 7,808:
return(m,day); // no match nowhere
});
foreach n,s in (nds){ println("%3d %s".fmt(n,s)); }</langsyntaxhighlight>
{{out}}
<pre style="height:45ex">
10,333

edits