×
sukces
Dodano do koszyka:
sukces
Pozycja znajduje się w koszyku, zwiększono ilość tej pozycji:
sukces
Zakupiłeś już tę pozycję:
Książkę możesz pobrać z biblioteki w panelu użytkownika
sukces
Pozycja znajduje się w koszyku
Przejdź do koszyka

Zawartość koszyka

ODBIERZ TWÓJ BONUS :: »

1 z 10 czyli 10 sposobów na 1 kod!

Opis
----

Konkurs: 1 z 10 czyli 10 sposobów na 1 kod!

10 000 zobowiązuje! Specjalnie dla Was – tylko dla Fanów marki Helion na Facebooku – przygotowaliśmy konkurs 1 z 10 czyli 10 sposobów na 1 kod!



Problem
----

Złośliwy programista w Helionie zakodował kod rabatowy przygotowany dla fanów. Kupon rabatowy zakodowany został w poniższym kodzie:

Kod
----

0x52 0x42 0x4c 0x50 0x41 0x5a

Pomóż wszystkim fanom i rozkoduj dla nich kod kuponu rabatowego! Jaka jego wartość? Zobaczysz podczas składania zamówienia! Programista dał jedną wskazówkę: Po rozkodowaniu znaków posortuj je od Z do A.


Zadanie konkursowe
----

Przedstaw powyższy kod w wybranym z wymienionych języku programowania:

shell(bash,awk,sek...) 
autor: Jakub Stawowy
rozwiązanie: 
echo -e "\x52\x42\x4c\x50\x41\x5a" | awk '{printf "%s\n", $_ | 
"grep -o . | sort -rn | tr -d '\n'" }'

C 
autor: Michał Wysoczański
rozwiązanie: 
#include 
int compare(const char *a, const char *b)
{
return (int) (*b - *a);
}
int main()
{
char kod[] = { 0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a };
int i;
qsort(kod, sizeof(kod), sizeof(char), compare);
for (i = 0; i < sizeof(kod); i++) {
printf("%c", kod[i]);
}
return 0;
} 

C++ 
autor: Piotr Borys
rozwiązanie: 
#include 
#include 
#include 
vector znaki;
znaki.push_back(0x52);
znaki.push_back(0x42);
znaki.push_back(0x4c);
znaki.push_back(0x50);
znaki.push_back(0x41);
znaki.push_back(0x5a);
sort(znaki.begin(), znaki.end());
reverse(znaki.begin(), znaki.end());
// sprawdzamy:
vector::iterator it;
cout << "Kod rabatowy: ";
for (it = znaki.begin(); it != znaki.end(); ++it)
cout << *it;
cout << endl; 


javascript  
autor: Artur Poniat
rozwiązanie: 
var arr = new Array('52','42','4c','50','41','5a');
var arrNew = new Array();
function hex2a(hex) {
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
for (item in arr)
{
arrNew.push(hex2a(arr[item]));
}
arrNew.sort();
arrNew.reverse();
console.log(arrNew.join(''));


java 
autor: Jacek Jackowiak
rozwiązanie: 
import java.util.Arrays;
 
/**
 *
 * @author airborn
 */
public class Main {
 
    public static void main(String[] args) {
        char[] array = new char[]{0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a};
        Arrays.sort(array);
        StringBuilder sb = new StringBuilder();
        System.out.println(sb.append(array).reverse().toString());
    }
}


pascal  
autor: Konrad Kopciuch
rozwiązanie: 
program helion;
var 
s: string;
i : integer; 
j : integer;
temp: char;
begin
s := chr($52)+chr($42)+chr($4c)+chr($50)+chr($41)+chr($5a);
for i := 1 to 5 do
for j := i + 1 to 6 do
if s[i] < s[j] then
begin 
temp := s[i]; 
s[i] := s[j];
s[j] := temp; 
end;
writeln(s); 
end.


perl  
autor: Jakub Słociński
rozwiązanie: 
perl -e 'foreach(qw/0x52 0x42 0x4c 0x50 0x41 0x5a/ ) 
{push @t, chr hex($_)}; print sort {$b cmp $a} @t' 

php  
autor: Michal Daniel 
rozwiązanie: 
‎$arr = array(chr(hexdec('0x52')), chr(hexdec('0x42')), chr(hexdec('0x4c')), 
chr(hexdec('0x50')), chr(hexdec('0x41')), chr(hexdec('0x5a')));
rsort($arr, SORT_STRING);
foreach ($arr as $v) echo $v;


python  
autor: Michał Białas
rozwiązanie: 
l = [0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a]
tmp = []
for ch in l:
tmp.append(chr(ch))
tmp.sort()
tmp.reverse()
print "".join(tmp)

ruby  
autor: Marcin Prokop
rozwiązanie: 
[0x52, 0x42, 0x4c, 0x50, 0x41, 0x5a].sort{ |x,y| y <=> x }
.each { |c| puts c.chr } 



C# 
autor: Anna Rapacz
rozwiązanie: 

        static void Main(string[] args)
        {
            int n;
            char c;
            string kod = "0x52 0x42 0x4c 0x50 0x41 0x5a";
            string[] kodArray = kod.Split(' ');

            for (int i = 0; i < kodArray.Length; i++)
            {
                kodArray[i] = ((char)Convert.ToInt32(kodArray[i], 
16)).ToString();
//                Console.WriteLine(kodArray[i]);
            }
            Array.Sort(kodArray);
            Array.Reverse(kodArray);

            foreach (string s in kodArray)
                Console.Write(s); //ZRPLBA
            
            Console.ReadLine();

        }


Rozwiązanie zadania przesyłajcie w komentarzu do wpisu odnośnie konkursu i na maila konkurs@helion.pl. Na tej podstawie liczone będzie pierwszeństwo rozwiązania.

Jest 10 języków programowania i wygrywa 10 osób - kto pierwszy w danym języku napisze rozwiązanie ten wygrywa! Co? Dowolnie wybraną książkę Helionu oraz kupon rabatowy na kolejne zakupy w helion.pl!

Zamknij Pobierz aplikację mobilną Helion