Jump to content
Sign in to follow this  
Faszysta Rasista Homofob

Zadanie dla programisty

Recommended Posts

Ponieważ dużo tutaj jest informatyków, a więc ludzi z natury kreatywnych, mam następujący temat:

Potrzebuję krótkie zadanie do zrobienia dla programisty, takie na góra dwa dni, żeby mógł się wykazać swoją wiedzą, a przede wszystkim inteligencją. Nie chodzi o ślepą znajomość jakiegoś języka programowania czy środowiska, ale właśnie spryt i umiejętność znajdowania rozwiązania. Preferowana tematyka baz danych i SQL, ewentualnie Delphi, ale tutaj już nie za bardzo można się wykazać. Jeżeli rozwiązanie będzie jednolinijkowe, tym lepiej, byle nie dało się go znaleźć łatwo w Google.

Stawiam piwo.

Share this post


Link to post
Share on other sites

Gdybyś Ty był kreatywny to byś nie zadawał takich pytań na forum, bo sam byś wymyślił zadanie. Poszedłeś na łatwiznę jak większość ludzi.

 

P.S. To podaj odpowiedź skoro Ty jesteś kreatywny.

Share this post


Link to post
Share on other sites

jake - wejdz na TeamSpeak'a - nie chce mi sie pisać a znam kilka ciekawych zadań

Share this post


Link to post
Share on other sites

Gdybyś Ty był kreatywny to byś nie zadawał takich pytań na forum, bo sam byś wymyślił zadanie. Poszedłeś na łatwiznę jak większość ludzi.

 

P.S. To podaj odpowiedź skoro Ty jesteś kreatywny.

Problem w tym, że odpowiedzi na większość takich zadań są już w Google (nawet na takie, do których sam doszedłem). A za Einsteina się nie uważam, więc trudno wymyślić coś nowego. Gdyby nie było Google, to byle głupek wymyśliłby proste zadanie i podniecał się, że żaden z jego kolesi z klatki schodowej nie zna odpowiedzi.

Share this post


Link to post
Share on other sites

jak 50km/h to zapewne nauka jazdy,a te powinny być białe ,bo raz że są najtańsze ,dwa że dobrze widoczne :)

Share this post


Link to post
Share on other sites

Jake, nie oceniaj mojej kreatywności, bo mnie nie znasz i nie masz prawa wyciągać takich wniosków.

 

A przy okazji - podaj mi link, gdzie google odpowiada na moje zadanie.

Share this post


Link to post
Share on other sites

Jake, nie oceniaj mojej kreatywności, bo mnie nie znasz i nie masz prawa wyciągać takich wniosków.

 

A przy okazji - podaj mi link, gdzie google odpowiada na moje zadanie.

Jesteś nauczycielem? Oni tak mają - poszukają zadania w Google, co zajmuje im 5 minut, a że uczeń znajdzie odpowiedź w drugie 5 minut, to już ich nie obchodzi, Ważne, że oni mają to z głowy, bo to przecież takie męczące.

 

Pseudofilozoficzne zadania mnie nie interesują, ale np. takie, jak znaleźć w tablicy rekordy, które zawierają tylko litery. To akurat proste.

Edited by jake

Share this post


Link to post
Share on other sites

Jesteś nauczycielem? Oni tak mają - poszukają zadania w Google, co zajmuje im 5 minut, a że uczeń znajdzie odpowiedź w drugie 5 minut, to już ich nie obchodzi, Ważne, że oni mają to z głowy, bo to przecież takie męczące.

 

Nie trafiłeś - nie jestem, natomiast powtórzę raz jeszcze: skoro dalej brniesz w przekonaniu, że znalezienie zadania i odpowiedzi zajmuje 5 minut to znajdź odpowiedź na moje pytanie i na nie odpowiedz. Zadanie jest proste i żadne pseudofilozoficzne.

 

Zresztą nie ma sensu ciągnąć dalej tego tematu, bo i tak wyjdzie na moje.

 

Najlepszego.

Share this post


Link to post
Share on other sites

W jakim języku myśli osobo która od dziecka nie mówi i nie słyszy?

To jest pytanie. Masz plusa

Edited by marcin_l85

Share this post


Link to post
Share on other sites

Mamy 2 typy klientów (A i B).

Klient typu A może mieć 'córki' wtedy parent pokazuje na 'matkę'

Do transakcji zawsze dochodzi między A i B ( nie ma możliwości aby w jedną transakcje zaangażowane był A i A lub B i B ) przy czym 'córka' jest również typu A.

 

 

CREATE TYPE c_type AS ENUM ('A', 'B');

 

create table customers

( id serial,

parent int REFERENCE customer (id),

typ c_type,

name text

);

 

 

trochę podobną sytuacje mamy z produktami ( zakładamy że ilość produktów jest stała i znama ) czli są produkty główne i pod produkty.

Transakcja może być zawarta zaróno na produkt główny jak i na pod produkt.

 

CREATE TABLE products

(

id serial,

parent int REFERENCE products(id),

name text

)

 

 

 

 

wreszcie tabela reprezentująca operacje

 

create table transactions

( id int,

payer int REFERENCE customer (id),

partner int REFERENCE customer (id),

product int REFERENCE product (id),

secondary_id int,

fee numeric,

CONSTRAINT transactions_pkey PRIMARY KEY (id,payer,product,secondary_id)

);

 

 

id to indetyfikator 'transakcji' możemy myśleć że jest identyfikator kontraktu między stronami.

Kontrakt musi obejmować wykonanie jednej lub więcej usług (do ilości produktów) ( produktów ).

Jeden kontrakt zawsze skutkuje conajmniej dwoma wpisami

np kontrakt 1 między A:321 i B:5432 na wykonanie usług 8 i 9 będzie reprezentowany tak:

1;321;5432;8;NULL,1.1

1;5432;321;8;NULL,0.1

1;321;5432;9;NULL,1.43

1;5432;321;9;NULL,32.11

 

 

Jak widać z przykłądu powyżej fee za pojedynczą usługę jest różne po każdej ze stron.

 

Secondary id jest użyty tylko kiedy występuje więcej jak jedna usługa danego typu w obrębie kontraktu.

Ale uwaga jeśli w obrębie jednego kontraktu występują np dwie usługi P3 to ilość transakcji P3 w raporcie o którym mowa w zadaniu to 1.

Przykłąd - Usługa poinformowanie SMS - liczymy za każdego SMS ale traktujemy w raporcie jak 'pakiet'

 

Teraz wreszcie zadanie.

 

Trzeba wygenerować raport przychodów i iliści transakcji per Klient A i każdy produkt podstwowy.

Dodatkowo policzyć wpływ wynikający z transakcji od każdego klienta typu A oraz rozbić to na wpływ od owego klienta i 2gich strom wszystkich jego transakcji oraz to samo per każdy produkt i ilość ptrnsakcji takiego prduktu i średnie.

 

 

spodziewamy się takiej tabelki na wyjściu

 

total_fee,total_tr_cnt,total_avg_fee,A_sum_fee,A_avg_fee,B_sum_fee,B_avg_fee,P1_total_fee,P1_A_sum_fee,P1_B_sum_fee,P1_tr_cnt,P1_avg_fee,P1_A_avg_fee,P1_B_avg_fee ...

A1

A2

A3

A4

.

.

.

 

gdzie kolumny znaczą

total_fee - suma wpływów dla wiersza

total_tr_cnt - ilość transakcji dla wiersza

total_avg_fee - średnia fee dla wiersza

A_sum_fee - suma wpływów od klienata typu A dla wiersza

A_avg_fee - średni fee od klienata typu A dla wiersza

B_sum_fee - suma wpływów od klienata typu B dla wiersza

B_avg_fee - średni fee od klienata typu B dla wiersza

P1_total_fee - suma fee dla produktu P1 dla wiersza

P1_A_sum_fee - suma fee dla produktu P1 od klienta typu A dla wiersza

P1_B_sum_fee - suma fee dla produktu P1 od klienta typu B dla wiersza

P1_tr_cnt - ilość transakcji produktu P1 dla wiersza

P1_avg_fee - średnie fee dla wiersza

P1_A_avg_fee - średnie fee produktu P1 od klienta typu A dla wiersza

P1_B_avg_fee - średnie fee produktu P1 od klienta typu B dla wiersza

 

 

Oczywiście każdy produkt musi być zmapowany do Master produktu a każdy klient do master produktu

No i część P powinna być powielona do ilośći master produktów

 

 

 

Zadanie nie jest łatwe ani do zrozumienia ani do wykonania ani do napisania.

Jest to uproszczony sceneriusz czegoś z czym walczyłem ( wygrałem ) niedawno.

Moje rozwiązanie ma jakieś 180 lini ( jest to jedno zapytanie SQL )

ilość wierszy w tabeli transactions to od 1.2 - 2.5 mln

w pliku wyjściowym jest niecałe 900 wierszy i kolumn do AW.

czs wykonania zależy - ale waha się do 90-550 sekund - oparte na PostgreSQL 9.3

( ale mój przypadek jest bardziej złożony )

Share this post


Link to post
Share on other sites

A co to w ogóle znaczy "myśl przewodnia tematu"? To się nazywa pleonazm.

 

Mamy 2 typy klientów (A i B).

Chyba jednak zbyt skomplikowane, ale dzięki. Może kiedyś wykorzystam.

 

no i teraz jake zabłyśnie jaki jest inteligentny ,ba nawet może podwyżka będzie :)

Mylisz się i to bardzo. Na pewno nie moja.

Share this post


Link to post
Share on other sites

ale np. takie, jak znaleźć w tablicy rekordy, które zawierają tylko litery.

Nie wiem czy chcesz zadania rodem z przedszkola programistycznego czy coś z algorytmiki, ale tutaj masz jedno:

Mając listę N liczb wiemy o nich, że wszystkie liczby na liście występują dwukrotnie oprócz jednej. Czyli lista wygląda na przykład tak:

12 12 10 10 13 15 15

Liczba która jest tutaj sama to 13.

Dla danej listy znajdź jedną liczbę niepasującą. Nic nie zakładaj o przedziale liczbowym.

Rozwiąż to zadanie w czasie liniowym i pamięci stałej(!). Wszystkie chwyty dozwolone.

Edited by piwosz

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.