Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Něco podobného jako fuzzy logika

Aktivity
Avatar
TomBen
Tvůrce
Avatar
TomBen:5.7.2013 13:21

Jak byste napsali funkci, která vrací následující:

vstup/výstup
------------
0/'0'
kladné číslo/'+'
záporné číslo/'-'

Pokud možno bez ifů. Na jazyce mi nezáleží, pište nápady v čem libo.
Není to žádná soutěž, jen mě to zajímá.

Odpovědět
5.7.2013 13:21
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na TomBen
Lukáš Hruda:5.7.2013 13:33

Pokud jsem to správně pochopil, tak bych to napsal takhle:

char Funkce(int cislo)
{
  return (cislo >= 0) ? "+" : "-";
}
Editováno 5.7.2013 13:34
 
Nahoru Odpovědět
5.7.2013 13:33
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Lukáš Hruda:5.7.2013 13:40

Pardon, má tam být '+' : '-'

 
Nahoru Odpovědět
5.7.2013 13:40
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
TomBen:5.7.2013 13:44

Mělo by to vracet nulu jako znak, v případě, že vstup je nula jako číslo.

Nahoru Odpovědět
5.7.2013 13:44
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na TomBen
Lukáš Hruda:5.7.2013 14:00
char Funkce(int cislo)
{
  return (cislo > 0) ? '+' : (cislo < 0) ? '-' : '0';
}
 
Nahoru Odpovědět
5.7.2013 14:00
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
TomBen:5.7.2013 14:11

A nějaké řešení čistě bitově přes logické funkce by to mělo?
Kdyby se pak výsledek jen překonvertoval na znak.

Editováno 5.7.2013 14:12
Nahoru Odpovědět
5.7.2013 14:11
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Homo
Člen
Avatar
Odpovídá na TomBen
Homo:5.7.2013 14:20
char sign(int i) {
    if (i == 0) return '0';
    if (i >> 31 != 0) return '-';
    return '+';
}
Nahoru Odpovědět
5.7.2013 14:20
1010011 1000101 1011000
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Homo
TomBen:5.7.2013 14:31

Posun bitu je zajímavý, ale kdyby se nějak dal skloubit s těmi ostatními
stavy - takhle to je 3x pořád podmínka = stav. Vlastně je to stejné řešení
jako to co má Lukáš Hruda.

Nahoru Odpovědět
5.7.2013 14:31
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Odpovídá na TomBen
Luboš Běhounek Satik:5.7.2013 20:15

Dalo by se to napsat v asm s jen jednou podminkou (v eax posilas cislo, do al dostanes vysledny znak):

cmp eax, 0
  jz nula
  jge kladny
  mov al, 0x2D ; -
  ret
kladny:
  mov al, 0x2B ; +
  ret
nula:
  mov al, 0x30 ; 0

V C# "bez podminky" treba takhle, ale to asi neni reseni, ktere sis predstavoval :)

static char sgn(int number)
{
  return number.ToString("+#;-#;0")[0];
}
Nahoru Odpovědět
5.7.2013 20:15
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Luboš Běhounek Satik:5.7.2013 20:23

misto jge by tam bylo spravnejsi *jg, i kdyz uz je to v tu chvili fuk, protoze pokud to byla nula, tak uz se skocilo jinam

Nahoru Odpovědět
5.7.2013 20:23
https://www.facebook.com/peasantsandcastles/
Avatar
Luboš Běhounek Satik:5.7.2013 20:38

Ono se to pak nejspis smrskne na problem jak z cisla -1/0/1 udelat odpovidajici znak bez podminkovani.

Udelat z cisla jen cislo 0/1/-1 (podle "znamenka") uz je celkem jednoduche a zpusobu je hromada.

(sorry za triple post, chtelo by to tu vyresit nejak jinak tu editaci prispevku... :) )

Nahoru Odpovědět
5.7.2013 20:38
https://www.facebook.com/peasantsandcastles/
Avatar
TomBen
Tvůrce
Avatar
TomBen:5.7.2013 21:08

Díky všem. Paradoxně Satikův C# kousek byl pro mě nejvíc inspirativní
i když použil řešení takřka obchvatem. :-)
Ale zajímavé jsou skoro všechny postupy a skutečně se ukazuje,
že je způsobů požehnaně.

Nahoru Odpovědět
5.7.2013 21:08
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.