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: #includeRozwią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.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(); }
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!