Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,39 @@
namespace AdventureTime
using System;

namespace AdventureTime
{
internal class Program
{
private static void Main()
{
DateTime dt = Time.WhatTimeIsIt();
DateTime udt = Time.WhatTimeIsItInUtc();

Console.WriteLine(dt);
Console.WriteLine(udt);

// all the same
Console.WriteLine(Time.SpecifyKind(dt, DateTimeKind.Utc));
Console.WriteLine(Time.SpecifyKind(dt, DateTimeKind.Local));
Console.WriteLine(Time.SpecifyKind(dt, DateTimeKind.Unspecified));

var roundtrip = Time.ToRoundTripFormatString(dt);
Console.WriteLine(roundtrip);
Console.WriteLine(Time.ParseFromRoundTripFormat(roundtrip));

Console.WriteLine(Time.AddTenSeconds(dt));
Console.WriteLine(Time.AddTenSecondsV2(dt));

Console.WriteLine(Time.GetHoursBetween(udt, dt));
Console.WriteLine(Time.GetTotalMinutesInThreeMonths());

Console.WriteLine(Time.GetAdventureTimeDurationInMinutes_ver0_Dumb());
Console.WriteLine(Time.GetGenderSwappedAdventureTimeDurationInMinutes_ver0_Dumb());
Console.WriteLine(Time.GetAdventureTimeDurationInMinutes_ver1_FeelsSmarter());
Console.WriteLine(Time.GetAdventureTimeDurationInMinutes_ver3_NodaTime());

Console.WriteLine(Time.AreEqualBirthdays(dt, udt));
Console.WriteLine(Time.AreEqualBirthdays(dt, udt.AddDays(1)));
}
}
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.1" />
<PackageReference Include="coverlet.collector" Version="1.3.0" />
<PackageReference Include="xUnit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\BoringVector\BoringVector.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using System;
using Xunit;

namespace BoringVector.Tests
{
public class VectorTest
{
[Fact]
public void Test_SquareLength()
{
Vector v = new Vector(3, 4);
Assert.Equal(25, v.SquareLength());
}
[Theory]
[InlineData(1, 5)]
[InlineData(0, 0)]
[InlineData(-1, 1)]
public void Test_Add(double x, double y)
{
Vector v = new Vector(3, 4);
Vector u = new Vector(x, y);
v.Add(u);
Assert.Equal(new Vector(3+x, 4+y).ToString(), v.ToString());
}
[Theory]
[InlineData(5)]
[InlineData(0)]
[InlineData(-2)]
public void Test_Scale(double scale)
{
Vector v = new Vector(3, 4);
v.Scale(scale);
Assert.Equal(new Vector(3*scale, 4*scale).ToString(), v.ToString());
}
[Fact]
public void Test_DotProduct()
{
Vector v = new Vector(3, 4);
Vector u = new Vector(1, -1);
Assert.Equal(-1, v.DotProduct(u));
}
[Fact]
public void Test_CrossProduct()
{
Vector v = new Vector(3, 4);
Vector u = new Vector(4, -3);
Assert.Equal(-25, v.CrossProduct(u));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<TargetFramework>netcoreapp5.0</TargetFramework>
</PropertyGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using System;
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("BoringVector.Tests")]

namespace BoringVector
{
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,10 +1,58 @@
namespace BoringVector
using System;

namespace BoringVector
{
enum VectorRelation
{
General,
Parallel,
Orthogonal
}
/*
Здесь тебе нужно написать класс с методами-расширениями структуры Vector:
- IsZero: проверяет, является ли вектор нулевым, т.е. его координаты близки к нулю (в эпсилон окрестности). За эпсилон здесь и далее берем 1e-6.
- IsZero: проверяет, является ли вектор нулевым, т.е. его координаты
близки к нулю (в эпсилон окрестности). За эпсилон здесь и далее
берем 1e-6.
- Normalize: нормализует вектор
- GetAngleBetween: возвращает угол между двумя векторами в радианах. Примечание: нулевой вектор сонаправлен любому другому.
- GetRelation: возвращает значение перечесления VectorRelation(General, Parallel, Orthogonal) - отношение между двумя векторами("общий случай", параллельны, перпендикулярны). Перечисление задавать тоже тебе)
- GetAngleBetween: возвращает угол между двумя векторами в радианах.
Примечание: нулевой вектор сонаправлен любому другому.
- GetRelation: возвращает значение перечесления
VectorRelation(General, Parallel, Orthogonal) - отношение между
двумя векторами("общий случай", параллельны, перпендикулярны).
Перечисление задавать тоже тебе)
*/
internal class ExtendedVector : Vector
{
const double eps = 0.000001;
public ExtendedVector(double x, double y) : base(x, y) {}
public bool IsZero()
{
return Math.Abs(x) < eps && Math.Abs(y) < eps;
}

public ExtendedVector Normalize()
{
double len = Math.Sqrt(SquareLength());
x /= len;
y /= len;
return this;
}

static public double GetAngleBetween(ExtendedVector v, ExtendedVector u)
{
if (v.IsZero() || u.IsZero()) {
return 0;
}
return Math.Acos(v.Normalize().DotProduct(u.Normalize()));
}
static public VectorRelation GetRelation(ExtendedVector v, ExtendedVector u)
{
if (v.CrossProduct(u) == 0) {
return VectorRelation.Parallel;
} else if (v.DotProduct(u) == 0) {
return VectorRelation.Orthogonal;
}
return VectorRelation.General;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,76 @@ namespace WubbaLubbaDubDub.Tests
{
public class RicksMercilessEncryptorTests
{

[Fact]
private static void Test_SplitToLines()
{
string text = "Hello\nWorld";
var list = text.SplitToLines();
Assert.Equal("Hello", list[0]);
Assert.Equal("World", list[1]);
}
[Fact]
private static void Test_SplitToWords()
{
string text = "Hello World";
var list = text.SplitToWords();
Assert.Equal("Hello", list[0]);
Assert.Equal("World", list[1]);
}
[Fact]
private static void Test_GetLeftHalf()
{
string text = "Hello World";
Assert.Equal("Hello", text.GetLeftHalf());
}
[Fact]
private static void Test_GetRightHalf()
{
string text = "Hello World";
Assert.Equal(" World", text.GetRightHalf());
}
[Fact]
private static void Test_GetRightHalf()
{
string text = "Hello World";
Assert.Equal("He11o World", text.Replace("ll", "11"));
}
[Fact]
private static void Test_CharsToCodes()
{
string text = "He";
Assert.Equal("\\u0048\\u0065", text.CharsToCodes());
}
[Fact]
private static void Test_GetReversed()
{
string text = "Hello";
Assert.Equal("olleH", text.GetReversed());
}
[Fact]
private static void Test_InverseCase()
{
string text = "Hello";
Assert.Equal("hELLO", text.InverseCase());
}
[Fact]
private static void Test_ShiftInc()
{
string text = "Hello";
Assert.Equal("Ifmmp", text.InverseCase());
}
[Fact]
private static void Test_GetUsedObjects()
{
string str =
@"// comment
dead:beef
/*
Задача на поиграться с регулярками - вся сложность в том, чтобы аккуратно игнорировать комментарии.
Экспериментировать онлайн можно, например, здесь: http://regexstorm.net/tester и https://regexr.com/
*/";

Assert.Equal(3735928559, str.GetUsedObjects());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<TargetFramework>netcoreapp5.0</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>
Expand All @@ -12,4 +12,10 @@
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>


<ItemGroup>
<ProjectReference Include="..\WubbaLubbaDubDub/RicksMercilessEncryptor.cs" />
</ItemGroup>


</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System;
using System.Text;
using System.Security.Cryptography;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;

namespace MyBenchmarks
{
public class StringAdd
{
private const int N = 1000;
private readonly string data;

private readonly StringBuilder stringbuilder = new StringBuilder("");

public StringAdd()
{
data = new string('*', N);
}

[Benchmark]
public string Join() => string.Join("", data);

[Benchmark]
public string BuilderJoin() => stringbuilder.AppendJoin("", data).ToString();

[Benchmark]
public string Concatenate() => string.Concat(data);
}

public class Program
{
public static void Main()
{
var summary = BenchmarkRunner.Run<StringAdd>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
``` ini

BenchmarkDotNet=v0.13.0, OS=ubuntu 20.04
Intel Core i5-8250U CPU 1.60GHz (Kaby Lake R), 1 CPU, 8 logical and 4 physical cores
.NET SDK=5.0.203
[Host] : .NET 5.0.6 (5.0.621.22011), X64 RyuJIT
DefaultJob : .NET 5.0.6 (5.0.621.22011), X64 RyuJIT


```
| Method | Mean | Error | StdDev |
|------------ |-----------------:|------------------:|------------------:|
| Join | 26.94 ns | 0.526 ns | 0.439 ns |
| BuilderJoin | 85,051,155.23 ns | 11,071,144.320 ns | 32,643,518.817 ns |
| Concatenate | 15.47 ns | 2.106 ns | 6.209 ns |
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev
Join,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 5.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,1,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,26.94 ns,0.526 ns,0.439 ns
BuilderJoin,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 5.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,1,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"85,051,155.23 ns","11,071,144.320 ns","32,643,518.817 ns"
Concatenate,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 5.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,1,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,15.47 ns,2.106 ns,6.209 ns
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>MyBenchmarks.StringAdd-20210527-005536</title>

<style type="text/css">
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
tr { background-color: #fff; border-top: 1px solid #ccc; }
tr:nth-child(even) { background: #f8f8f8; }
</style>
</head>
<body>
<pre><code>
BenchmarkDotNet=v0.13.0, OS=ubuntu 20.04
Intel Core i5-8250U CPU 1.60GHz (Kaby Lake R), 1 CPU, 8 logical and 4 physical cores
.NET SDK=5.0.203
[Host] : .NET 5.0.6 (5.0.621.22011), X64 RyuJIT
DefaultJob : .NET 5.0.6 (5.0.621.22011), X64 RyuJIT
</code></pre>
<pre><code></code></pre>

<table>
<thead><tr><th>Method</th><th> Mean</th><th> Error</th><th> StdDev</th>
</tr>
</thead><tbody><tr><td>Join</td><td>26.94 ns</td><td>0.526 ns</td><td>0.439 ns</td>
</tr><tr><td>BuilderJoin</td><td>85,051,155.23 ns</td><td>11,071,144.320 ns</td><td>32,643,518.817 ns</td>
</tr><tr><td>Concatenate</td><td>15.47 ns</td><td>2.106 ns</td><td>6.209 ns</td>
</tr></tbody></table>
</body>
</html>
Loading