Diskuze: Transformace řady čísel
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud nepotřebuješ na výstupu taky tříciferné číslo, tak můžeš zkusit XOR.
const int XOR = 101;
static int ToX(int i) => i ^ XOR;
static int FromX(int x) => x ^ XOR;
Myslím, že by to mohlo fungovat. Místo 101 můžeš zkusit dát jiné číslo.
Ukázka:
895 -> 785 -> 895
896 -> 1006 -> 896
897 -> 1007 -> 897
898 -> 1004 -> 898
899 -> 1005 -> 899
900 -> 1002 -> 900
901 -> 1003 -> 901
902 -> 1000 -> 902
903 -> 1001 -> 903
904 -> 998 -> 904
905 -> 999 -> 905
906 -> 996 -> 906
907 -> 997 -> 907
908 -> 994 -> 908
909 -> 995 -> 909
910 -> 992 -> 910
911 -> 993 -> 911
912 -> 1022 -> 912
913 -> 1023 -> 913
914 -> 1020 -> 914
915 -> 1021 -> 915
916 -> 1018 -> 916
917 -> 1019 -> 917
918 -> 1016 -> 918
919 -> 1017 -> 919
920 -> 1014 -> 920
921 -> 1015 -> 921
922 -> 1012 -> 922
923 -> 1013 -> 923
924 -> 1010 -> 924
925 -> 1011 -> 925
926 -> 1008 -> 926
927 -> 1009 -> 927
928 -> 974 -> 928
929 -> 975 -> 929
Díky za řešení s XOR. Je zajímavé, ale potřeboval bych to mít více z přeházené. Pořád je to více méně řada
Možná jsem na jiný sjezdovce, ale napadlo mě, co třeba zkusit k tomu původnímu číslu něco přičíst (popř. ještě i něco odečíst) a ve výsledku pak zobrazit číslice v obráceném pořadí?
Generování dat se může dost prodloužit, když zvětšíš max...
class Program
{
const int seed = 42;
const int min = 1;
const int max = 999;
static Dictionary<int, int> data;
static int ToX(int i) => data.First(d => d.Value == i).Key;
static int FromX(int x) => data[x];
static void Main(string[] args)
{
var random = new Random(seed);
data = new Dictionary<int, int>();
for (int i = min; i < max + 1; i++)
{
while (true)
{
var x = random.Next(min, max + 1);
if (!data.ContainsKey(x))
{
data[x] = i;
break;
}
}
}
for (int i = min; i < max + 1; i++)
{
var x = ToX(i);
var j = FromX(x);
Console.WriteLine($"{i,4} -> {x,4} -> {j,4}");
}
}
}
Teď jsem si uvědomil, že je to docela neefektivní. Ale aspoň nějaká myšlenka se z toho dá vzít a můžeš to zkusit napsat líp..
Zobrazeno 6 zpráv z 6.