September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -1,5 +1,57 @@
|
|||
Function Reverse(ByVal s As String) As String
|
||||
Dim t() as Char = s.toCharArray
|
||||
Array.reverse(t)
|
||||
Return new String(t)
|
||||
End Function
|
||||
#Const REDIRECTOUT = True
|
||||
|
||||
Module Program
|
||||
Const OUTPATH = "out.txt"
|
||||
|
||||
ReadOnly TestCases As String() = {"asdf", "as⃝df̅", "Les Misérables"}
|
||||
|
||||
' SIMPLE VERSION
|
||||
Function Reverse(s As String) As String
|
||||
Dim t = s.ToCharArray()
|
||||
Array.Reverse(t)
|
||||
Return New String(t)
|
||||
End Function
|
||||
|
||||
' EXTRA CREDIT VERSION
|
||||
Function ReverseElements(s As String) As String
|
||||
' In .NET, a text element is series of code units that is displayed as one character, and so reversing the text
|
||||
' elements of the string correctly handles combining character sequences and surrogate pairs.
|
||||
Dim elements = Globalization.StringInfo.GetTextElementEnumerator(s)
|
||||
Return String.Concat(AsEnumerable(elements).OfType(Of String).Reverse())
|
||||
End Function
|
||||
|
||||
' Wraps an IEnumerator, allowing it to be used as an IEnumerable.
|
||||
Iterator Function AsEnumerable(enumerator As IEnumerator) As IEnumerable
|
||||
Do While enumerator.MoveNext()
|
||||
Yield enumerator.Current
|
||||
Loop
|
||||
End Function
|
||||
|
||||
Sub Main()
|
||||
Const INDENT = " "
|
||||
|
||||
#If REDIRECTOUT Then
|
||||
Const OUTPATH = "out.txt"
|
||||
Using s = IO.File.Open(OUTPATH, IO.FileMode.Create),
|
||||
sw As New IO.StreamWriter(s)
|
||||
Console.SetOut(sw)
|
||||
#Else
|
||||
Try
|
||||
Console.OutputEncoding = Text.Encoding.ASCII
|
||||
Console.OutputEncoding = Text.Encoding.UTF8
|
||||
Console.OutputEncoding = Text.Encoding.Unicode
|
||||
Catch ex As Exception
|
||||
Console.WriteLine("Failed to set console encoding to Unicode." & vbLf)
|
||||
End Try
|
||||
#End If
|
||||
For Each c In TestCases
|
||||
Console.WriteLine(c)
|
||||
Console.WriteLine(INDENT & "SIMPLE: " & Reverse(c))
|
||||
Console.WriteLine(INDENT & "ELEMENTS: " & ReverseElements(c))
|
||||
Console.WriteLine()
|
||||
Next
|
||||
#If REDIRECTOUT Then
|
||||
End Using
|
||||
#End If
|
||||
End Sub
|
||||
End Module
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue