Няшная / Говнокод #10621 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	long i, copy, n, temp;
	int *ar, j, k, flag, d1, d2;
	for(i=987654321; i>=123456789; i--)
	{		
		copy=i;
		ar=(int *)calloc(10, sizeof(int));
		while(copy>0)
		{
			if(copy%10==0)
				break;
			if(ar[copy%10]!=0)
				break;
			ar[copy%10]=1;
			copy/=10;
		}
		free(ar);
		if(copy==0)
		{				
			for(j=8; j>=5; j--)
			{
				flag=1;
				n=i/(long)pow(10, j);
				copy=i-n*(long)pow(10, j);
				for(k=2; k<=8 && flag; k++)
				{
					temp=n*k;
					if(temp>copy)
					{
						flag=0;
						break;
					}
					while(temp>0)
					{
						d1=temp/(long)pow(10, (int)log10(temp));
						d2=copy/(long)pow(10, (int)log10(copy));
						if(d1!=d2)
						{
							flag=0;
							break;
						}
						temp=temp-d1*(long)pow(10, (int)log10(temp));
						copy=copy-d2*(long)pow(10, (int)log10(copy));
					}
					if(copy==0)
					{
						printf("The pandigital number is %ld and the integer is %ld\n", i, n);
						return 0;
					}
				}
			}
		}
	}
	return 0;
}

Очередной гений с пр. Ейлер:
http://projecteuler.net/problem=38
http://projecteuler.net/thread=38&page=8


>Runtime: 14.86s on 2.67Ghz machine

Запостил: TheHamstertamer TheHamstertamer, (Updated )

Комментарии (11) RSS

  • То же задание, Хаскелл:
    import Data.List
    import Data.Char
    fromDigits = foldl addDigit 0                                                      
       where addDigit num d = 10*num + d 
    problemSpace = filter (>= 918273645) $ map fromDigits $ reverse $ sort $ permutations [1..9] 
    numDigits :: Int -> Int
    numDigits q = floor (logBase 10 (fromIntegral q)) + 1
    listForm n = map digitToInt $ show n
    workList xs = map (*(fromDigits xs)) [1..9]
    lengthList xs = map (numDigits) xs
    fromMulDigits = foldl addDigit 0
       where addDigit num d = (10 ^ (floor $ (log (fromIntegral d)) / (log 10) + 1))*num + d 
    check ll wl c n
    	| length ll == 1	= fromMulDigits (take (c+1) wl) == n
    	| (head ll)+(head $ tail ll) < 9	= check ([(head ll)+(head $ tail ll)]++(tail $ tail ll)) wl (c+1) n
     	| (head ll)+(head $ tail ll) > 9	= False
       | (head ll)+(head $ tail ll) == 9	= fromMulDigits (take (c+1) wl) == n
    truncateR xs
    	| length xs > 0 	= xs:(truncateR $ take ((length xs)-1) xs)
    	| otherwise 		= []
    trunc xs = reverse $ truncateR xs
    isDecomposable n = elem True $ map (\e -> check (lengthList $ workList e) (workList e) 1 n) (trunc $ listForm n)
    main = print(head $ take 1 $ filter (isDecomposable) problemSpace)



    *facepalm*
    Ответить
    • Извините, не мог устоять:
      import Data.List                        ( sort, foldl1' )
      import Data.Maybe                       ( catMaybes )
      import Safe                             ( headMay )
      
      
      digits :: Int -> [Int]
      digits = go []
          where go acc 0 = acc
                go acc n = let (a,b) = n `divMod` 10 in go (b:acc) $! a
      
      undigits :: [Int] -> Int
      undigits = foldl1' $ \ a b -> 10 * a + b
      
      prod :: Int -> Int -> [Int]
      prod x n = digits =<< map (x*) [1..n]
      
      
      maxPan :: Int -> Maybe Int
      maxPan n = let lim = 10 ^ (9 `div` n)
                     prods = map (`prod` n) [lim, lim-1 .. 1]
                 in fmap undigits . headMay $ filter isPan prods
      
          where isPan ds = sort ds == [1..9]
      
      main :: IO ()
      main = print . maximum . catMaybes $ map maxPan [2..9]
      Ответить
  • Знаешь, |c|, по-моему, я схожу с ума...
    Дело в том, что иногда по ночам мне кажется, что я яваблядь. Мне хочется выделять память, зарабатывать на доширак, пиздеть про энтерпрайз, сваливать свои проблемы на чужие плечи и писать нечитаемый бессмысленный говнокод.
    Я ворочаюсь, страдаю, рычу, а под конец вскакиваю с кровати и хватаю первое, что попалось под руку.
    Это может быть тапок, топор или простая поварешка, но в моем воображении она становится огромным прожорливым интерпретатором.
    С этим интерпретатором я открываю корпус сервера, ставлю ещё две планки оперативной памяти и с громким боевым кличем выбегаю на улицу. Я бегаю под окнами своих соседей и ору: "Ява не тормозит, тупые нищебляди!! Купите нормальное железо!!"
    Но они не покупают... Они привыкли.
    И когда я уставший, но довольный, поднимаюсь в квартиру, наоравшись и набегавшись, одна из дверей открывается. Там, лукаво сверкая глазенками, стоит маленький соседский мальчик Женька. Он громко шепчет беззыбым ртом "Клоссплатфолменность!" и ободряюще мигает мне одним глазом.
    Я, улыбаясь ему, прохожу мимо, и в душе моей поют заказчики.
    А дома я открываю бутылку водки, морщась, выпиваю ее до половины, и ловлю кота. Ругая этого "сраного волосатого индуса", я сажаю его за клавиатуру, и чтобы он не убежал, приматываю его к ней скотчем.
    А дальше все просто.
    Я стою у окна, пуская скупую быдлокодерскую слезу по своей прыщавой щеке , и мечтаю. Я представляю, что огни домов -- это пламя костров, на которых сжигают крестопидоров, шум машин -- это рев кулеров в серверных, а в мире нет ничего, кроме великого энтерпрайза и нас, яваблядей...
    И я жду, что вдруг, вот сейчас, в мою дверь войдет начальник и скажет: "Эй, раб, ты чо так так долго? Давай, быстро дописывай исходник. Похуй, если будет тормозить - разберутся те, кто будет сопровождать! ГА-га-га-га!" И ободряюще хлопнет меня по спине.
    И тогда не будет в мире счастливее человека, чем я... Точнее, явабляди.
    Что же мне делать, анон? Что же мне делать?
    Ответить
  • Какой адъ.

    % time ruby19 38.rb > /dev/null
    ruby19 38.rb > /dev/null 0,08s user 0,02s system 97% cpu 0,109 total
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8